问题标签 [multitargeting]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
32 浏览

c# - Multilingual App Toolkit 是否与多目标框架兼容?

我正在尝试将 MAT 与我正在构建的包一起使用(在 C# 中)。当我的包仅针对一个框架时,我可以启用 MAT(例如 .NET core 3.1)

但如果我选择以多框架为目标,则该选项被禁用

(注意框架末尾的“s”)

我错过了什么?

0 投票
2 回答
158 浏览

c# - 是否可以使用 #if NET6_0_OR_GREATER 从 BenchmarkDotNet 运行中排除基准方法?

假设您正在编写一些与 BenchmarkDotNet 一起使用的基准测试,这些基准测试是多目标的net48net6.0,并且其中一个基准测试只能针对net6.0目标编译。

显而易见的事情是使用这样的东西从net48构建中排除特定的基准:

不幸的是,这不起作用,并且它不起作用的方式取决于TargetFrameworks项目文件中属性中指定的目标的顺序。

如果您订购框架,那么net6.0首先<TargetFrameworks>net6.0;net48</TargetFrameworks>(在上面的示例中)该UsingSpan()方法包含在两个目标中,导致net48目标和输出的 BenchmarkDotNet 构建错误,如下所示:

另一方面,如果您对框架进行排序,那么net48首先<TargetFrameworks>net48;net6.0</TargetFrameworks>(在上面的示例中)该UsingSpan()方法被排除在两个目标中,结果输出如下:

我必须通过单一目标项目和编辑项目文件以分别针对框架来解决这个问题,然后为每个目标分别运行基准测试。

有没有办法让它与多目标项目一起工作?


为了完整起见,这里有一个完整的可编译测试应用程序来演示该问题。我正在使用 Visual Studio 2022。

项目文件:

“Program.cs”文件:

0 投票
1 回答
22 浏览

debugging - “要调试此项目,请将其配置为使用 'Managed (CoreCLR)' 调试器。” 尝试在 .NET Core 中调试多目标框架时

我正在使用 Visual Studio 2019,并且我有一个针对 .NET Framework 4.72 和 .NET Core 5.0 的多目标框架。

多目标 .csproj 配置如下:

当我尝试调试 .NET Core 可执行文件时,出现此错误:

发生致命错误,需要终止调试。调试器配置为使用桌面 CLR (.NET Framework) 托管调试器,但目标进程加载了 CoreCLR (.NET Core) 运行时。要调试此项目,请将其配置为使用“托管 (CoreCLR)”调试器。

0 投票
0 回答
44 浏览

c# - 为 netstandard2.0 和 net6 创建多平台库 - System.Runtime 出现问题

在公司迁移到 net6 时,我们还希望为 netstandard2.0 和 net6 建立一些库。(我们跳过了短期支持 net5)

有一个图书馆作为本地参考:以及。将库作为专有 nuget 源:引用 System.Runtime 的问题

从项目中引用库,将 netCore3.1 作为框架

... 使用 'System.Runtime, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' 它的版本比引用的程序集 'System.Runtime' 的版本更高,标识为 'System.Runtime, Version=4.2.2.0, Culture =中性,PublicKeyToken=b03f5f7f11d50a3a' ...

但是nuget中不存在System.Runtime。

多目标库部署在 docker 容器中。

  • 有什么遗漏吗?
0 投票
1 回答
27 浏览

c# - System.ComponentModel.DataAnnotations 的多目标库(monoandroid、xamarinios)问题

我正在将一个(工作的).netstandard 库项目转换为一个多目标项目,该项目将针对:

<targetframeworks>netstandard2.1;xamarinios10;monoandroid10.0;monoandroid12.0;</targetframeworks>

我在使用 System.ComponentModel.DataAnnotations 参考时遇到问题。特别是我得到这个错误(除了.netstandard目标之外的所有东西):

The type 'DataType' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.ComponentModel.DataAnnotations, Version=2.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.

经过一番搜索后,我尝试添加 System.ComponentModel.Annotations (4.7.0) nuget 包。这给出了同样的错误。

在为此的 nuget 目录中,我注意到 .dll 通常所在的位置有一个文件 ' . ' - 我不知道这是否重要 (.nuget\packages\system.componentmodel.annotations\4.7.0\ref\MonoAndroid10) - .netstandard dll 按预期存在。

我还注意到(一个单独的)Xamarin.Android 项目似乎使用了位于 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\ReferenceAssemblies\Microsoft\ 中的 System.ComponentModel.DataAnnotations.dll框架\Xamarin.iOS\v1.0

我不确定 Mono.Android(或 ios 等效版本)的正确版本是否被定位,或者我必须指定特定的程序集版本,或者我是否完全走错了路?

在此先感谢,保罗。