Ser*_*kov 7 linux msbuild csproj .net-core
我有多目标csproj文件的解决方案:
<PropertyGroup>
<TargetFrameworks>net45;netstandard1.6</TargetFrameworks>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
要么
<PropertyGroup>
<TargetFrameworks>net45;netcoreapp1.1</TargetFrameworks>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
我正在尝试在Linux上构建此解决方案的.NET Core部分,但无法管理它.如果我跑
dotnet build
Run Code Online (Sandbox Code Playgroud)
它构建所有目标:netcoreapp1.1,netstandard1.6并且net45在net45上失败,因为.NET Core不在Linux上提供.NET 4.5平台.我试图通过将mono指定为构建框架来解决此问题,但解决方案很复杂,而且并非所有.NET 4.5都支持单声道.但是,这可以帮助其他人避免can't find .NETFramework v4.5运行:
FrameworkPathOverride=/usr/lib/mono/4.5/ dotnet restore
FrameworkPathOverride=/usr/lib/mono/4.5/ dotnet build
Run Code Online (Sandbox Code Playgroud)
当我跑步时,dotnet build /p:TargetFramework=netcoreapp1.1我得到了很多错误,我认为因为netstandard1.6没有构建项目.
如果我通过
dotnet build /p:TargetFrameworks=netcoreapp1.1\;netstandard1.6
Run Code Online (Sandbox Code Playgroud)
我明白了
MSBUILD : error MSB1006: Property is not valid.
Switch: netstandard1.6
Run Code Online (Sandbox Code Playgroud)
如何从命令行同时传递netcoreapp1.1和netstandard1.6定位框架到msbuild?
我知道我可以添加额外的属性并根据它进行条件编译,但我不想更改csproj以使其解决方法.
如果您真的不想在Linux上构建完整的框架或PCL版本,而只想要.net核心应用程序或.net标准库,则可以将项目文件(.csproj)修改为仅在Windows上具有多个目标,并且行为类似于针对非Windows上的单个框架的项目,如下所示:
<PropertyGroup>
<TargetFrameworks>netcoreapp1.1;net45</TargetFrameworks>
<TargetFrameworks Condition="'$(OS)' != 'Windows_NT'">netcoreapp1.1</TargetFrameworks>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
这允许为所有项目分别指定非Windows窗口netstandard*和netcoreapp*非Windows窗口,仅使用纯dotnet restore/ dotnet build命令即可构建应用程序的.net core仅版本。
| 归档时间: |
|
| 查看次数: |
1386 次 |
| 最近记录: |