我目前陷入以下问题:
我的一位同事已将他的一个C#项目移植到新的csproj格式(详见http://www.natemcmaster.com/blog/2017/03/09/vs2015-to-vs2017-upgrade/) . 使用Visual Studio 2017构建工作 . 不幸的是我在一些控制台应用程序中使用MSBuild来编译这些项目,并且在使用新的"PackageReference"关键字时,Visual Studio 2017附带的当前MSBuild版本似乎遇到了麻烦 .
有人对我有暗示吗?
Update:
以下是一些更多细节:
我有一个控制台应用程序,我从“Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Professional \ MSBuild \ 15.0 \ Bin”引用一些“Microsoft.Build”程序集 . 我正在使用“BuildManager”来构建代码 . 我的同事正在使用许多以前在“packages.config”文件中定义的nuget包引用 . 此文件不再存在...而是使用“<PackageReference Include = ...”将所有nuget引用现在包含在csproj文件中 .
当我启动我的控制台应用程序时,我将收到消息“(...)错误CS0234:类型或命名空间名称”CodeAnalysis“在命名空间”Microsoft'(...)“中不存在 . “Microsoft.CodeAnalysis”是我的同事正在使用的Nuget包之一 . 似乎BuildManager没有恢复这些nuget包:(
1 回答
根据错误消息:
您的项目可能已在该位置丢失了这些包:
C:\Users\<username>\.nuget\packages
,您可以检查它是否存在 .要解决此问题,您应该使用Visual Studio 2017打开同事的项目,然后手动恢复nuget包(右键单击解决方案 - >还原NuGet包) . 那是因为
BuildManager
的类不能用于恢复nuget包 . NuGet package restore supported by NuGet/Visual Studio.所以你应该恢复那些nuget包,然后用你的控制台应用程序构建它 . 此外,还有一个关于“
Microsoft.Build
”组件15.0的已知问题 . 有关详细信息,请参阅this issue on GitHub .希望这可以帮助 .