通过本地项目引用导入 NuGet 引用

Importing NuGet references through a local project reference

假设我有一个 "main" C# 项目,它使用 NuGet 来管理其第三方依赖项。

现在假设我在主项目旁边创建了一个单元测试项目,其中包括作为参考的主项目。

不幸的是,我似乎需要在主项目中重新添加通过 nuget 包含的依赖项,以便使用它们为单元测试项目中的单元测试编写代码。

我的问题是:有没有办法在测试项目中自动包含 "main" nuget 引用?

it seems that I need to re-add dependencies that are included via nuget in the main project in order to use them to write code for the unit tests in the unit test project.

那是因为 Visual Studio / MSBuild 试图变得聪明,只将引用引入它检测到项目 "main" 需要的项目单元测试。这样做是为了 避免项目单元测试中的间接引用污染 。您可以参考accepted answer了解更多详情。

My question is: Is there a way to automatically include the "main" nuget references in the testing project?

简单的回答是,但不确定这个方法对你是否有效。我post就到这里了,希望能给大家一些帮助。

您可以从 "main" 项目中 package.config 复制要添加到 UI-testing 的包列表 到UI-testing项目中的package.config,如:

  <package id="EntityFramework" version="6.1.3" targetFramework="net452" />
  <package id="Newtonsoft.Json" version="10.0.3" targetFramework="net452" />
  <package id="NUnit" version="3.7.1" targetFramework="net452" />

然后 nuget 将在您构建 UI-testing 时恢复这些包,您需要做的是在包管理器控制台中使用 NuGet 命令行:

Update-Package -Reinstall -ProjectName [name of your target project]

强制将包引用重新安装到 UI-测试项目中。