繁体   English   中英

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

[英]Using MSBuild with the new csproj format

我目前陷入以下问题:

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

有人对我有提示吗?

更新:

以下是更多详细信息:

我有一个控制台应用程序,在这里我从“程序文件(x86)\\ Microsoft Visual Studio \\ 2017 \\ Professional \\ MSBuild \\ 15.0 \\ Bin”引用一些“ Microsoft.Build”程序集。 我正在使用“ BuildManager”来构建代码。 我的同事正在使用很多nuget包引用,这些引用以前是在“ packages.config”文件中定义的。 该文件已不存在……而是现在使用“ <PackageReference Include = ...”将所有nuget引用都包含在csproj文件中。

当我启动控制台应用程序时,我将收到消息“(...)错误CS0234:名称空间'Microsoft'(...)中不存在类型或名称空间名称“ CodeAnalysis”。 “ Microsoft.CodeAnalysis”是我的同事正在使用的Nuget软件包之一。 似乎BuildManager不会还原这些nuget包:(

似乎BuildManager不能还原这些nuget包

根据错误信息:

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

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

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

因此,您应该还原这些nuget软件包,然后使用控制台应用程序对其进行构建。 此外,还有一个有关“ Microsoft.Build ”程序集15.0的已知问题。 您可以在GitHub上参考此问题以获取详细信息。

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM