将MSBuild与新的csproj格式一起使用



我目前陷入了以下问题:

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

有人给我暗示吗?

更新:

以下是更多详细信息:

我有一个控制台应用程序,在那里我引用了"Program Files(x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin"中的一些"Microsoft.Build"程序集。我使用"BuildManager"来生成代码。我的同事使用了很多nuget包引用,这些引用以前在"packages.config"文件中定义过。此文件已不存在。。。相反,所有nuget引用现在都使用"<PackageReference Include=…"包含在csproj文件中。

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

BuildManager似乎没有恢复这些nuget包

根据错误消息:

错误CS0234:类型或命名空间名称"CodeAnalysis"没有存在于命名空间中

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

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

因此,您应该恢复那些nuget包,然后使用控制台应用程序构建它。此外,存在关于"Microsoft.Build"组件15.0的已知问题。有关详细信息,您可以在GitHub上参阅此问题。

希望这能有所帮助。

最新更新