Jea*_*anz 6 c# visual-studio target-framework nuget-package
我使用 EntityFramework 5.0.13 组合了一个 .Net 5 for Windows 应用程序。
现在我们尝试在尚未安装 .Net 5 框架的特定服务器上运行它。管理服务器的好人告诉我,他们尝试安装新东西,但似乎无法使应用程序运行。可能需要重新启动服务器,但暂时无法完成。
所以我需要为我的应用程序使用较旧的目标框架。很好,所以我决定针对多个框架,同时添加 .Net Framework 4.8。在我的 .csproj 文件中,这相当于替换
<TargetFramework>net5.0-windows</TargetFramework>
Run Code Online (Sandbox Code Playgroud)
和
<TargetFrameworks>net5.0-windows;net48</TargetFrameworks>
Run Code Online (Sandbox Code Playgroud)
这应该可以解决问题。
不幸的是,EntityFramework 5.0.13 与 .Net Framework 4.8 不兼容。
所以我使用了旧版本 3.1.9(在我们的另一个项目上运行良好)。
需要一点说服力,但现在我的项目使用 3.1.9。(我相信,一旦我降级一些语句,它就会建立得很好Class variable = new();
。if (variable is not null)
)
现在,我想知道的是,我可以让我的 .Net 5 目标框架再次使用 EntityFramework 5.0.13 而不是 3.1.9 吗?
现在,我的 .csproj 文件读取
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.9" />
Run Code Online (Sandbox Code Playgroud)
在我开始使用多个目标框架之前,这是
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="5.0.13" />
Run Code Online (Sandbox Code Playgroud)
有没有办法添加属性PackageReference
(或将其替换为另一个节点),以便它仅针对特定框架?
一种简单的方法是有条件地添加 <PackageReference ...> 节点:
<ItemGroup>
<!-- ... -->
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.9" Condition="'$(TargetFramework)' == 'net48'" />
<!-- ... -->
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
这是https://learn.microsoft.com/en-us/nuget/consume-packages/package-references-in-project-files#adding-a-packagereference-condition的修改示例,如果需要,它会提供更多详细信息。
归档时间: |
|
查看次数: |
6764 次 |
最近记录: |