我甚至不确定我尝试做的事情是否可能......
示例代码:here
基本上,我已经构建了一个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构建它?我们有一个单一的构建和部署过程,如果可以避免的话,我宁愿不必改变它。谁知道还有什么会出错!
答案 0 :(得分:1)
要使用.NET Core或.NET Standard进行构建,您需要使用.NET Core SDK中的dotnet msbuild
command而不是普通的msbuild
。
dotnet msbuild .\netstandard_test.sln /p:Configuration=Release
这也适用于.NET Framework 4.6.1(和旧版本)。
请注意,Microsoft已提供install scripts,以便在持续集成服务器上轻松安装.NET Core SDK。
答案 1 :(得分:0)
您需要使用最近的15. *版本(目前为15.5。*)的MSBuild,并确保"跨平台开发"工作负载安装在visual studio中。这将添加所需的组件以查找.NET Core SDK,其中包含.NET标准和.NET Core项目使用的Microsoft.NET.Sdk
或Microsoft.NET.Sdk.Web
等MSBuild SDK。
然后,您可以使用开发人员命令提示符中的msbuild
来构建这些项目。我建议添加/restore
(msbuild> = 15.5。*)以确保基于sdk的项目发生NuGet恢复。
由于VS 2017没有安装"全球" MSBuild的版本,请务必使用VS 2017文件夹中安装的MSBuild版本(请与msbuild /version
或where msbuild
联系)。
dotnet msbuild
有一些限制。此外,它不支持COM引用或构建强命名程序集。如果您需要任何这些功能,请使用msbuild
(VS 2017)而不是dotnet msbuild
(.NET Core CLI)