C# 如何在每个站点安装一次XUnit VisualStudio Runner

C# 如何在每个站点安装一次XUnit VisualStudio Runner,c#,visual-studio,xunit,C#,Visual Studio,Xunit,编辑: 要使用xUnit VisualStudio Runner,需要将其作为Nuget软件包安装。这种方法是有问题的,因为(1)用户有义务将这个包添加到它正在创建的每个项目中,(2)对包二进制文件的引用有问题 (1) 这似乎不重要,但向每个项目添加一个包的要求是用户必须执行的另一个手动操作,这是我们希望消除的不必要的开销 (2) 不幸的是,我们的产品没有保持恒定的解决方案层次结构。因此,每个人都可以创建定制的解决方案。因此,包文件夹位置会根据解决方案文件的位置而变化。它反过来反映了硬编码到项目

编辑: 要使用
xUnit VisualStudio Runner
,需要将其作为
Nuget软件包安装。这种方法是有问题的,因为(1)用户有义务将这个包添加到它正在创建的每个项目中,(2)对包二进制文件的引用有问题

(1) 这似乎不重要,但向每个项目添加一个包的要求是用户必须执行的另一个手动操作,这是我们希望消除的不必要的开销

(2) 不幸的是,我们的产品没有保持恒定的解决方案层次结构。因此,每个人都可以创建定制的解决方案。因此,
文件夹位置会根据解决方案文件的位置而变化。它反过来反映了硬编码到项目文件(.csproj)中的路径,该路径与
xUnit VisualStudio Runner
包的位置有关,这使得无法管理代码(每个用户在工作期间都必须更改项目文件)

我们正在寻找一种方法,将
xUnit VisualStudio Runner
二进制文件注册为单元测试运行程序,而无需使用Nuget包注册过程

关于这个问题,如果有任何提示,我将不胜感激。我没有办法问xUnit开发者这个问题。我已经回顾了官方和官方的做法。 完成此任务的已声明为过时,无法再在VS上安装


谢谢。

我已经为VS2015创建了VS扩展,它使用XUnit Nuget包。扩展将包的二进制文件安装为UnitTest适配器。你可以在里面找到一个包裹。请注意,它使用特定版本的XUnit适配器。我没有动态上传最新版本。

您可以创建一个包含NuGet引用的公司单元测试项目模板,而不是将NuGet适配器作为Vsix分发。如果您想更进一步,可以将这些项目模板作为扩展上传到私有扩展库

创建新测试项目的用户将自动包含正确的NuGet软件包,您不需要让每个用户都安装VSIX

另见

您可以,也可以下载其中一个

背景 关于这一点为何重要的一点背景:

  • 通过在解决方案中不包括NuGet包,CI服务器(例如TFS Build)将需要安装运行程序的匹配版本,否则开发人员工作站和生成服务器之间可能存在兼容性问题
  • 如果构建服务器安装了特定版本的运行程序,则当运行程序中出现重大更改时(例如NUnit 3与2.6不兼容),很难迁移到新版本的XUnit。您要么坚持旧框架,要么立即升级所有解决方案,要么为新解决方案启动新的构建服务器
  • 它不允许开发人员在使用较旧的解决方案(引用较旧版本的XUnit)的同时,使用可能针对最新版本的XUnit的新解决方案

创建项目模板非常容易,尤其是在使用SideWaffle时。通过分发,您可以用更少的步骤帮助开发人员,同时还可以自由地将解决方案与工作站配置分离。

您不能这样做。接受新设计或切换到其他框架。您是否有任何信息支持此声明?只需阅读粗体部分。您的参考是xUnit团队关于其扩展包的声明。我不想恢复扩建。我希望将包和(例如)放置在某个地方,以使VS将始终拾取它们,而不仅仅是当它们是项目的一部分时。任何其他解决方案都可以做到这一点,让我安装一次并用于所有项目。每个解决方案仅恢复一次NuGet软件包,因此VS可以以其支持的方式高效地重用二进制文件。我没有得到你想要的,所以你最好说得更清楚,更新你的问题。谢谢。我已经解释了为什么在我们的开发环境中使用Nuget包是一个问题,特别是作为单元测试适配器使用的包。请参阅问题正文了解更多详细信息。关于“不将包包含在解决方案中”的内容相同。在像我们这样的商业产品环境中,我们不会太频繁地升级软件包(商业或开源)。因此,使用XUnit包的固定版本不会有问题。就个人而言,我不喜欢使用包来创建解决问题的包。更简单——更好!