[英]Using MSBUILD on a Framework461 solution that references a NetStandard20 assembly
我什至不确定我想做的事情是否可能...
示例代码: 此处
基本上,我已经建立了一个netstandard20类库,根据.NET实现支持列表,该库应该与framework461项目兼容(前提是您拥有.NET Core 2.0 SDK)。
我可以毫无后顾之忧地建立netstandard20类库,并重新获得DLL(它包含在示例代码中)。
这是问题开始的地方,当尝试运行msbuild .\\netstandard_test.sln
来构建framework461项目时,我收到一堆关于(未误)“ netstandard”的错误(我认为是误导性的)。
但是,如果我运行dotnet build
(或从VS2017构建),则一切正常。
我尝试导入各种版本的NetStandard,NetStandard.Library和NetStandard.Library.Framework,以及引用Microsoft.DotNet.BuildTools,但这似乎没有帮助。
有什么方法可以使用msbuild来构建它吗? 我们有一个整体的构建和部署过程,如果可以避免的话,我宁愿不必更改它。 谁知道还有什么地方会出错!
要使用.NET Core或.NET Standard进行构建,您需要使用.NET Core SDK中的dotnet msbuild
命令 ,而不仅仅是简单的msbuild
。
dotnet msbuild .\netstandard_test.sln /p:Configuration=Release
这也将与.NET Framework 4.6.1(和较旧版本)一起使用。
请注意,Microsoft提供了安装脚本,以使在连续集成服务器上轻松安装.NET Core SDK变得容易。
您需要使用MSBuild的最新15. *版本(当前为15.5。*),并确保Visual Studio中安装了“跨平台开发”工作负载。 这将添加所需的组件以定位.NET Core SDK,其中包含MSBuild SDK,如.NET Standard和.NET Core项目使用的Microsoft.NET.Sdk
或Microsoft.NET.Sdk.Web
。
然后,您可以在开发人员命令提示符下使用msbuild
来构建这些项目。 我建议添加/restore
(msbuild> = 15.5。*),以确保基于sdk的项目发生NuGet还原。
由于VS 2017未安装MSBuild的“全局”版本,因此请确保使用VS 2017文件夹中安装的MSBuild版本(请使用msbuild /version
或where msbuild
)。
当您使用包含文件引用或非字符串属性的.resx文件时, dotnet msbuild
具有局限性。 另外,它不支持COM引用或构建强命名程序集。 如果需要这些功能中的任何一个,请通过dotnet msbuild
(.NET Core CLI)使用msbuild
(VS 2017)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.