.NET 6 的 C++/CLI 库 - 如何引用 .NETCoreApp?

问题描述 投票:0回答:1

我正在尝试将 C++/CLI 库

.vcxproj
项目从 .NET Framework 4.8 移植到 .NET 6。

MS指南说:

  1. <TargetFrameworkVersion>
    属性替换为
    <TargetFramework>net8.0</TargetFramework>
    。请务必更改标签和值。

好吧,我现在想针对 .NET 6 而不是 .NET 81,但这种修改似乎微不足道。我已在我的

<PropertyGroup Label="Globals">
文件的
.vcxproj
部分尝试了以下元素:

  • <TargetFramework>net6.0</TargetFramework>
  • <TargetFramework>.netcoreapp6.0</TargetFramework>
    按照另一个答案
  • 中的建议

这两者都会产生以下编译器错误:

您的项目未引用“.NETCoreApp,Version=v6.0”框架。在项目文件的“TargetFrameworks”属性中添加对“.NETCoreApp,Version=v6.0”的引用,然后重新运行 NuGet 恢复。

现在,如果我do使用

<TargetFrameworks>.NETCoreApp,Version=v6.0</TargetFrameworks>
代替上面的<TargetFramework>
元素,编译器会输出以下错误:

NETSDK1013

无法识别 TargetFramework 值“”。它可能拼写错误。如果不是,则必须显式指定 TargetFrameworkIdentifier 和/或 TargetFrameworkVersion 属性。

从这里开始,我尝试了两件事:

    我已按照建议指定了两个值:
  • <TargetFrameworks>.NETCoreApp,Version=v6.0</TargetFrameworks> <TargetFrameworkIdentifier>.NETCoreApp</TargetFrameworkIdentifier> <TargetFrameworkVersion>6.0</TargetFrameworkVersion>
    
    
  • 我同时使用了
  • <TargetFramework>
    <TargetFrameworks>
    <TargetFrameworks>.NETCoreApp,Version=v6.0</TargetFrameworks> <TargetFramework>net6.0</TargetFramework>
    
    
在这两种情况下,我都会再次收到第一条错误消息。

我该如何解决这个问题?


1:我知道 .NET 6 的支持期即将结束。但这是一个非常大的项目的一部分,其中包含大量 .NET 6 程序集,并且将在接下来的几周内完全迁移到 .NET 8。在那之前,一切都应该保留在 .NET 6 上。

.net-core c++-cli
1个回答
0
投票
我们现在的目标是 5.0,但我们首先迁移到 6.0

我们的项目有什么:

<PropertyGroup Label="Globals"> ... <TargetFrameworkVersion>v6.0</TargetFrameworkVersion> <TargetFramework>net6.0-windows</TargetFramework> ...
以及

Debug

Release

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> ... <CLRSupport>NetCore</CLRSupport> ...
这可以在

移植指南中找到

请注意

this(在移植指南中提到,但我一开始没有给予足够的重视......之后出现了一些副作用......)。我们使用这个hack来帮助解决这个问题,但它添加了一些丑陋的代码。

.runtimeconfig.json

 应该在编译过程中为您生成。对于加载的第一个 dll 是强制性的。编译期间没有任何影响。

© www.soinside.com 2019 - 2024. All rights reserved.