Mik*_*EEE 13 .net msbuild .net-core .net-standard
我是GitHub项目的贡献者,最近我们将.NET Standard 2.0项目正确安装到.NET Framework 4.5项目中遇到了一些麻烦.原因是(如果我理解正确的话).NET Standard 2.0支持4.6.1的最小.NET Framework.
好,可以.所以我们更新了.csproj以创建另一个框架输出:
<TargetFrameworks>netstandard2.0;net45</TargetFrameworks>
Run Code Online (Sandbox Code Playgroud)
在我们的测试项目中,支持的框架定义如下:
<TargetFrameworks>netcoreapp2.0;net471;net45</TargetFrameworks>
Run Code Online (Sandbox Code Playgroud)
但是,我们遇到了net471构建问题,因为它似乎正在采用net45框架而不是框架netstandard2.0.为了使这个工作,我们必须设置TargetFrameworks类库如下:
<TargetFrameworks>netstandard2.0;net471;net45</TargetFrameworks>
Run Code Online (Sandbox Code Playgroud)
这似乎是过度的,因为它似乎.netstandard2.0应该是TargetFramework那个net471,而不是net45目标.
有没有办法强制项目引用特定的TargetFramework?我在测试项目中尝试了以下内容,但似乎没有用:
<ItemGroup Condition="'$(TargetFramework)' != 'net471'">
<ProjectReference Include="..\..\src\ExtendedXmlSerializer\ExtendedXmlSerializer.csproj" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net471'">
<ProjectReference Include="..\..\src\ExtendedXmlSerializer\ExtendedXmlSerializer.csproj">
<TargetFramework>netstandard2.0</TargetFramework>
</ProjectReference>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
提前感谢您提供的任何帮助!
Mar*_*ich 17
您可以像这样更改项目参考:
<ProjectReference Include="..\..\src\ExtendedXmlSerializer\ExtendedXmlSerializer.csproj"
AdditionalProperties="TargetFramework=netstandard2.0" />
Run Code Online (Sandbox Code Playgroud)
强制在默认的"获取最近的TFM"逻辑上选择特定的目标框架.
Lor*_*ori 10
这是行不通的。VS 2017年15.5.5。从4.6.2 MSTest项目net462目标的多目标(net462; netstandard2.0)类库中引用。– SerG 2月13日13:34
的确,解决这个问题的新方法是:
<ProjectReference Include="..\multitargeted_lib\multitargeted_lib.csproj">
<SetTargetFramework>TargetFramework=netstandard2.0</SetTargetFramework>
</ProjectReference>
Run Code Online (Sandbox Code Playgroud)
来源在这里。
| 归档时间: |
|
| 查看次数: |
2392 次 |
| 最近记录: |