1

我正在构建一个包含类库、UnitTest 项目和 .vdproj 设置项目的解决方案。因为 MSBuild 无法处理 vdproj,所以我使用的是 devenv.com。我C:\NuGet\nuget.exe restore "%WORKSPACE%\solution.sln" -ConfigFile C:\NuGet\NuGet.config在构建开始之前调用并使用"C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\devenv.com" rotring.tacton.export.sln /build "ci".

之后,我使用"C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe" "%WORKSPACE%\testproject.test\bin\ci\tests.dll".

nuget restore 命令告诉我每个包都已正确还原到正确的位置: Added package 'package.1.9.11' to folder 'C:\dev\workspace\solution\packages'.

但我仍然收到错误: error CS0234: The type or namespace name 'sometype' does not exist in the namespace 'somenamespace' (are you missing an assembly reference?)

即使我手动执行上面提到的控制台构建,本地构建也能正常工作。我是否需要使用 devenv.com 以某种方式恢复软件包?与packages.config相比,PackageReference的优势不是所有包都存储在同一个地方吗?

更新:我设法找到了一部分自己。一件事是我的测试项目没有迁移到 PackageReference 并导致错误。但是,我能够通过首先使用 MSBuild 恢复包来构建解决方案:

"C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\Bin\MSBuild.exe" /t:Restore /p:RestoreConfigFile="C:\NuGet\NuGet.config"

然后使用 devenv.com 构建解决方案:

"C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\devenv.com" solution.sln /build "ci"

现在我面临的唯一问题是 msbuild 只从主项目恢复包,并不关心测试项目。

4

0 回答 0