C# 目标.NET 4.x和.NET标准2.0
去年,我将.NET标准2.0支持添加到。我通过创建第二个.NET标准项目实现了这一点,基本上是复制并粘贴源代码。经过一些调整,它准备好了 但是,由于我按需添加了功能,所以在两个项目中更改相同的内容确实很麻烦。只要创建一个代码库并简单地更改编译目标就好了 预编译语句不是一个选项,因为.NET 4.x版本还包括一些NuGet包,这些包不适用于.NET标准C# 目标.NET 4.x和.NET标准2.0,c#,.net-standard-2.0,C#,.net Standard 2.0,去年,我将.NET标准2.0支持添加到。我通过创建第二个.NET标准项目实现了这一点,基本上是复制并粘贴源代码。经过一些调整,它准备好了 但是,由于我按需添加了功能,所以在两个项目中更改相同的内容确实很麻烦。只要创建一个代码库并简单地更改编译目标就好了 预编译语句不是一个选项,因为.NET 4.x版本还包括一些NuGet包,这些包不适用于.NET标准 我目前能想到的解决方案是,创建一个共享库,包括所有跨项目类。还是有一个更平滑的解决方案?用建议的解决方案解决了问题。.csproj如下所示 <
我目前能想到的解决方案是,创建一个共享库,包括所有跨项目类。还是有一个更平滑的解决方案?用建议的解决方案解决了问题。.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包管理器。我必须手动将每个条目添加到正确的项目组中
编辑:仅当两个TargetFramework都不支持包时,才需要手动编辑。只需更改设置->NuGet Paket管理器->默认格式->PackageReference
用建议的解决方案解决了这个问题。.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包管理器。我必须手动将每个条目添加到正确的项目组中
编辑:仅当两个TargetFramework都不支持包时,才需要手动编辑。只需更改设置->NuGet Paket管理器->默认格式->PackageReference
可以将现有项目中的源文件作为链接添加到另一个项目中
project a
somefile.cs
project b
右键单击项目b,添加现有项…导航到项目a中的somefile.cs,然后添加
您可以编辑任一项目中的文件…因此请小心。您可以将现有项目中的源文件作为链接添加到另一个项目中
project a
somefile.cs
project b
右键单击项目b,添加现有项…导航到项目a中的somefile.cs,然后添加
您可以从任何一个项目编辑该文件…因此请小心。为什么不为完整框架设置一个.SLN/.csproj,为引用相同源文件的标准框架设置一个?.csproj可以根据生成目标有条件地引用包。$TargetFramework conditions在.csproj中。感谢关键字。要尽快尝试吗?为什么没有一个.SLN/.csproj用于完整框架,一个用于引用相同源文件的标准框架?.csproj可以有条件地引用包,具体取决于生成目标。$TargetFramework conditions在.csproj中。感谢关键字。我会尽快试一试的