我目前陷入了以下问题:
我的一个同事已经将他的一个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上参阅此问题。
希望这能有所帮助。