使用MSBuild和新的csproj格式

时间:2017-11-15 09:00:28

标签: c# visual-studio msbuild format csproj

我目前遇到了以下问题:

我的一位同事已将他的一个C#项目移植到新的csproj格式(详见http://www.natemcmaster.com/blog/2017/03/09/vs2015-to-vs2017-upgrade/)。使用Visual Studio 2017构建工作。不幸的是我在一些控制台应用程序中使用MSBuild来编译这些项目,而且当使用新的" PackageReference"时,Visual Studio 2017附带的当前MSBuild版本似乎遇到了麻烦。关键词。

有人有提示吗?

更新

以下是一些更多细节:

我有一个控制台应用程序,我引用了一些" Microsoft.Build"来自"程序文件(x86)\ Microsoft Visual Studio \ 2017 \ Professional \ MSBuild \ 15.0 \ Bin"的程序集。我正在使用" BuildManager"用于构建代码。我的同事正在使用许多nuget包引用,这些引用先前在" packages.config"中定义。文件。此文件不再存在...而是所有nuget引用现在都包含在csproj文件中,使用"< PackageReference Include = ..."。

当我启动我的控制台应用程序时,我将收到消息"(...)错误CS0234:类型或命名空间名称" CodeAnalysis"在命名空间中不存在' Microsoft' (...)&#34 ;. " Microsoft.CodeAnalysis"是我的同事正在使用的Nuget包之一。似乎BuildManager没有恢复这些nuget包:(

1 个答案:

答案 0 :(得分:0)

  

似乎BuildManager没有恢复这些nuget包

根据错误消息:

  

错误CS0234:类型或命名空间名称" CodeAnalysis"才不是   存在于命名空间

您的项目可能已在该位置丢失了这些包:C:\Users\<username>\.nuget\packages,您可以检查它是否存在。

要解决此问题,您应该使用Visual Studio 2017打开同事的项目,然后手动恢复nuget包(右键单击解决方案 - &gt;还原NuGet包)。这是因为BuildManager的类不能用于恢复nuget包。 NuGet / Visual Studio支持的NuGet包恢复。

所以你应该恢复那些nuget包,然后用你的控制台应用程序构建它。此外,还有一个关于&#34; Microsoft.Build&#34;组件15.0。您可以参考this issue on GitHub了解详细信息。

希望这有帮助。