去年,我向Network library添加了.NET Standard 2.0支持。我确实通过创建第二个(.NET Standard)项目来实现此目的,并且基本上复制并粘贴了源代码。经过一些调整,就可以开始了。
但是由于我是按需添加功能的,所以在两个项目中更改相同的内容确实很麻烦。只需创建一个代码库并简单地更改编译目标就可以了。
预编译语句不是一种选择,因为.NET 4.x版本还包含一些NuGet程序包,而这些程序不适用于.NET Standard。
我目前可以想到的解决方案是创建一个共享库,其中包括所有跨项目类。还是有一个更流畅的解决方案?
答案 0 :(得分:4)
使用建议的解决方案解决了问题。 .csproj看起来如下
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net46;netstandard2.0</TargetFrameworks>
</PropertyGroup>
<PropertyGroup>
<RestoreProjectStyle>PackageReference</RestoreProjectStyle>
</PropertyGroup>
<ItemGroup>
<Compile Remove="packages\**" />
<EmbeddedResource Remove="packages\**" />
<None Remove="packages\**" />
</ItemGroup>
<ItemGroup>
<!-- PackageReferences for all TargetFrameworks -->
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net46' ">
<!-- PackageReferences for net46 TargetFramework -->
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'netstandard2.0' ">
<!-- PackageReferences for standard2.0 TargetFramework -->
</ItemGroup>
</Project>
当前唯一的问题:我无法使用NuGet软件包管理器。我必须将每个条目手动添加到正确的ItemGroup中。
EDIT:只有两个TargetFrameworks都不支持这些软件包时,才需要手动编辑。只需更改设置-> NuGet-Paket-Manager->默认格式-> PackageReference
答案 1 :(得分:1)