首页 文章

使用MSBuild与新的csproj格式

提问于
浏览
1

我目前陷入以下问题:

我的一位同事已将他的一个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 回答

  • 0

    似乎BuildManager没有恢复这些nuget包

    根据错误消息:

    错误CS0234:命名空间中不存在类型或命名空间名称“CodeAnalysis”

    您的项目可能已在该位置丢失了这些包: 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 .

    希望这可以帮助 .

相关问题