Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 引用项目的NuGet包管理失败_C#_Unit Testing_Nuget_Visual Studio 2017 - Fatal编程技术网

C# 引用项目的NuGet包管理失败

C# 引用项目的NuGet包管理失败,c#,unit-testing,nuget,visual-studio-2017,C#,Unit Testing,Nuget,Visual Studio 2017,我们有一个解决方案,其中包含一个使用NuGet的TestFramework的项目。 我们有另一个参考该项目的解决方案 项目/解决方案文件系统结构如下所示: - Tests - Tests - Properties - AssemblyInfo.cs - packages.config - Tests.csproj - Tests.sln - RefToTests - RefToTests.sln RefToTes

我们有一个解决方案,其中包含一个使用NuGet的TestFramework的项目。 我们有另一个参考该项目的解决方案

项目/解决方案文件系统结构如下所示:

- Tests
   - Tests
       - Properties
           - AssemblyInfo.cs
       - packages.config
       - Tests.csproj
   - Tests.sln
- RefToTests
   - RefToTests.sln
RefToTests.sln
包含对
Tests.csproj
的引用

如果我打开
Tests.sln
并尝试构建它,我会得到一个错误,告诉我无法找到引用的NuGet依赖项。没问题-打开NuGet management for解决方案,单击“恢复”,然后再次构建它。很好

相同的干净文件夹,但现在已打开
RefToTests.sln
。同样的错误。同样的工作流程。将包还原为
RefToTest\packages
。项目正在
。\packages
什么是
Tests\packages
。这不会建立

我们试图通过手动将文件夹从
。\packages
更改为
$(SolutionDir)packages
来修复此问题。这很有效。丢失的软件包会自动下载(哇,如果没有更改就无法工作)

但是现在让我们更新包。包管理器无法在项目文件中找到引用,保留旧条目不变,并添加了全新的引用。该项目不会内置任何解决方案。这可能是NuGet项目管理中的一个缺陷。在我看来,如果发现
$(SolutionDir)
,包解析应该崩溃,或者包管理应该能够处理这个问题


但解决办法是什么?是否将目录更改为
$(SolutionDir)
,并在每次更新后检查每个项目文件?将指定文件夹保持原样,并且从不在存储库上执行清理?

“RefToTests.sln包含对Tests.csproj的引用”您是如何将Tests.csproj引用到RefToTests.sln的?由于这两个项目不在同一个解决方案中,无法直接添加项目引用,所以这就是我感到困惑的地方。如果可能的话,你能提供一些详细的步骤吗?你是如何做到的,或者给我一个测试样本。@Leo MSFT也许一个参考是错误的。我将这个现有项目添加到解决方案中。因此,有两个解决方案包含同一个项目。您是否也尝试将对Tests.csproj的引用安装到RefToTests.sln?@Leo MSFT抱歉,我不明白您的意思。我该试试什么?我试图将引用包的位置从
。\packages
更改为
$(SolutionDir)packages
。有了这个更改,我们可以从每个解决方案中构建一个干净的代码库,但我们不能更新现有的包。我的意思是,您将
TestFramework
添加到测试项目中,然后将测试项目引用到RefToTests项目中,您是否也将
TestFramework
包安装到RefToTests项目中?我说得对吗?由于此问题与包的位置有关,因此我建议您可以尝试将路径统一到所有解决方案的绝对路径,“RefToTests.sln包含对Tests.csproj的引用”您是如何将Tests.csproj引用到RefToTests.sln的?由于这两个项目不在同一个解决方案中,无法直接添加项目引用,所以这就是我感到困惑的地方。如果可能的话,你能提供一些详细的步骤吗?你是如何做到的,或者给我一个测试样本。@Leo MSFT也许一个参考是错误的。我将这个现有项目添加到解决方案中。因此,有两个解决方案包含同一个项目。您是否也尝试将对Tests.csproj的引用安装到RefToTests.sln?@Leo MSFT抱歉,我不明白您的意思。我该试试什么?我试图将引用包的位置从
。\packages
更改为
$(SolutionDir)packages
。有了这个更改,我们可以从每个解决方案中构建一个干净的代码库,但我们不能更新现有的包。我的意思是,您将
TestFramework
添加到测试项目中,然后将测试项目引用到RefToTests项目中,您是否也将
TestFramework
包安装到RefToTests项目中?我说得对吗?由于这个问题与包的位置有关,所以我建议您可以尝试将所有解决方案的统一路径转换为绝对路径,