问题标签 [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 投票
0 回答
90 浏览

c# - 统一的目标框架名称是什么?

最近我们开发了一个多目标 .net 库,其中我们通过使用以下属性添加了对 UWP、.NetCore、.NetStandard、Xamarion.IOS 和 MonoDroid 的支持

我们尝试扩展对统一项目的支持,但我们不知道统一的 tfm 是什么,当我搜索它时,我遇到了 NET 4.x 这个术语,但我不知道如何将它用作 tfm TargetFrameworks 标签,谁能帮我找出来。

0 投票
0 回答
140 浏览

c# - 将 .NET Core 多目标添加到 .NET Framework 库

我有一个带有 NuGet 包依赖项的 .NET Framework 库。此库仅由 .NET Framework 项目使用。其中一些来自本地项目引用,大部分来自 NuGet。我将库发布到私有 NuGet 服务器。

使用基于 .NET Core 的基础架构出现了一些项目,我想让我的标准库可用于这些项目。我不会将任何现有基础架构切换到 .NET Core。我不想将 .NET Core 依赖项引入每个现有的 .NET Framework 项目。我注意到,当我安装某些多目标库时,有时它们会包含“netstandard”或类似的东西——并安装很多依赖项。这些是不可接受的,并且会立即从 .NET Framework 项目中卸载。

是否可以将我的 .NET Framework(如果重要,则为 4.72)项目多定位到 .NET Core,同时仍生成本机 .NET Framework 库?我可以将库中的所有代码复制并粘贴到 netcoreapp3.1 项目中,安装 NuGet 依赖项,该代码运行良好。但是,我不想将此库移植到 .NET Core,然后将其多目标返回到 .NET Framework。据我所知,这与拥有本机实现不同。我只想能够在 .NET Core 应用程序中使用该库,而无需复制和粘贴整个库,并且不让版本不同步。仪式越少越好。

我的 csproj 文件没有<TargetFrameworkor<TargetFrameworks>属性。它有一个<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>属性。

我正在尝试做的事情可能吗?我无法从我读过的文档中看出。

0 投票
1 回答
125 浏览

xamarin - Nuget 包,带有用于 sdk 和非 sdk 项目类型的本机库,并支持多目标(net452、netstandard20、netstandard21)

我有一个 NuGet 包,它支持 3 种不同TF的 s,并且应该可用于Non-sdk(旧csproj格式)和Sdk(新格式)csproj文件的消费者(应用程序)。我的 nugget 还包含native适用于 Windows、Linux 和 mac os 的库。

我遇到的唯一问题与本机库的处理有关。我以这种方式配置它(也有类似的步骤涵盖非windows OS):

上述配置适用于sdk项目,但不包括non-sdks. 因此,我在 main 中又添加了一步csproj

MyApp.targets 看起来像:

以上解决了消费者与项目相关的问题,但如果消费者使用+non-sdk则会触发问题,因为此平台在构建期间尝试处理(库也已处理,但预期不同)即使存在条件(适用于这种情况) )。xamarinmac OSnativeWindowsLibrary.dllMacOS-builtWindows-builtOS = Windowsfalse

所以,我的主要问题是关于如何为上述我们需要支持的情况创建 NuGet 包的指南(示例):

  • 非 SDK 和 SDK 的 csproj 文件
  • 不同的目标框架
  • 平台相关库(放置在runtimes

另外,对提供的配置有什么建议吗?

0 投票
2 回答
173 浏览

c# - 如何根据平台目标在自定义控件中使用不同的基类?

我有一个用于 iOS 的自定义编辑器,但对于 UWP,我使用另一个名为SfRichTextEditor.

现在我想知道如何像可共享的类一样创建,因为它们具有相同的可绑定属性而不是做我目前所做的,这是ContentView在它们之上创建一个,这导致:

  1. 出于性能目的不必要的嵌套

  2. 重复代码

  3. 似乎有些绑定有问题(未验证,但有些奇怪)。

因此,如果可能的话,我希望有一个可共享的基类来重用代码,而不是这种方法。

这些是我今天拥有的 x2 控件。

我的 iOS 自定义控件:

我的 UWP 自定义控件:

最新线索** 在此处输入图像描述 更新** 共享 .csproj: 在此处输入图像描述

苹果系统: 在此处输入图像描述

设置: 在此处输入图像描述

错误: 在此处输入图像描述

0 投票
1 回答
64 浏览

visual-studio - 当操作来自 NuGet 包时,如何在多目标项目上操作 Packageversion

我有一个带有目标文件的 NuGet 包,它根据当前上下文操作 PackageVersion(当分支是 master 时,它会创建一个预览)。

这在普通项目上运行良好,但是当我在多目标项目中使用它时它不起作用。

我该如何纠正?

我附上了一个示例项目。https://1drv.ms/u/s!At1IZ7t_aXW-iNRchOhliGP8dunGHg?e=11dW4F 重现问题:

  1. 解压所有文件
  2. 你需要一个本地 NuGet 源
  3. 在 BuildConfig/publish.bat 中输入本地 NuGet 源的名称
  4. 在 BuildConfig 中调用 publish.bat
  5. 在消费者中运行“dotnet pack”

这将创建一个版本为 1.0.0 的消费者包。这应该是 1.0.0-xdev。

当您更改 Consumer.csproj 以便使用 TargetFramework 时,会创建正确的版本

我已尝试在目标之外进行版本修改,但这会导致在 Directory.Build.Targets 文件中指定版本号时出现问题

我尝试了不同的 BeforeTargets,但没有任何效果。

0 投票
1 回答
310 浏览

c# - 使用 .exe 文件作为内容文件创建 NuGet 包

我一直在尝试将已安装的 7ZipCLI NuGet 包中的 7za.exe 文件包含到一个项目中,我希望在该项目中创建一个 NuGet 包。NuGet 包同时面向 .NET Standard2.0 和 .NET Framework v4.6.1+。我正在使用 Net Standard 功能在 Build 上创建 NuGet 包。

字体完美复制到 NuGet 包,但 .exe 不想复制。

有人可以帮我将 7za.exe 放在包的内容文件夹中吗?它不需要是内容文件夹,我只是希望在安装 NuGet 包时将其复制到使用项目的输出目录中。

这是 .csproj 文件:

这里也是 NuGet 包目前的样子:

当前的 NuGet 包

0 投票
0 回答
33 浏览

c# - Mutltitarget 无需修改 csproj 格式

我需要为我正在处理的示例应用程序之一进行多目标。这是结构。

我有一个 AppOne(控制台应用程序)和两个类库(CLSOne,CLSTwo)。AppOne 调用 CLSOne。CLSOne 调用 CLSTwo。CLSTwo 具有与 azure 交互以从 Key vault 获取机密的逻辑。CLSTwo 依赖于 Microsoft.Azure.KeyVault 和 Microsoft.Azure.Services.AppAuthentication。

以上所有内容都在 DotNet Framework 中。现在我想在不更改 csproj 格式的情况下将此应用程序多目标定位到 DotNet Standard 2.0。

有人可以帮我解决这个问题吗?

0 投票
1 回答
1147 浏览

.net-core - 如何在 .NET Core 3.0 SDK 上构建多目标 .NET 5 和 .NET Core 3.1

我正在尝试升级我的项目以支持 .NET 5,同时仍在构建 .NET Core 3.1 工具集。

我尝试.net5.0像这样将 .NET 5 TFM ( ) 添加到我的目标框架中。

不幸的是,当在仅安装了 .NET Core 3.1 工具集的机器上运行时,这会导致构建失败。

我试图找到一个条件,所以我net5.0只能在它可用的情况下定位,但文档很少。

0 投票
1 回答
76 浏览

c# - 在引用多目标类库时,如何让 NuGet 了解包的特定版本?

我们有三个项目:

WebApp.csproj,针对 .NET Framework 2.0 编译的 ASP.NET WebForms 应用程序

Api.csproj,针对 .NET Framework 4.5 编译的 ASP.NET WebApi 2

Lib.csproj,针对 .NET Framework 2.0 编译并被上述两个项目引用。

Lib.csproj<TargetFrameworks>net20;net45</TargetFrameworks>已以新的 .NET 项目格式(.NET Core 使用的格式)重新创建,并使用该技术针对 .NET Fw 2.0 和 4.5 。

到目前为止一切顺利,我可以通过编写适当的部分来引用不同的 NuGet 包,Lib.csproj如下所示:

我可以指向 target的Api.csproj版本,如下所示:Lib.csprojnet45

版本net20参考,NLog 2.1.0一。net45NLog 4.7.8

问题:现在我想NLog 4.7.8Api.csprojManage Packages for Solution的.Api.csprojLib.csproj2.1.0

我尝试选择这两个项目并安装它,但是由于NLog 4.7.8net20.

所以真的,问题是 NuGet 似乎没有意识到我引用的项目是一个多目标项目,并且只看到版本中安装的 NLognet20版本,即使Api.csproj目标是正确的“风味” Lib.csproj(如果我去检查二进制文件,复制到输出文件夹的 NLog.dll 版本对于我的每个目标都是正确的)。

我尝试在互联网上查看,但无济于事。

公平地说:被复制到Api.csproj'sbin文件夹的 NLog 版本是正确的,所以它不是一个展示者。但这有点烦人,因为 NuGet 显示了我的依赖项的错误版本,然后很难判断我们实际使用的是哪个版本。

对于一些上下文:这个应用程序显然是古老的,至少WebApp.csproj。由于性能原因,我们正在Api.csproj使用async/await,并且由于该项目引用了可以异步Lib.csproj但显然无法在 .NET 2 下编译的代码,因此我们选择了Lib.csproj多目标。

0 投票
0 回答
123 浏览

python - 多输出 XGBoost 回归器中的 DMatrix

我正在尝试将超参数调整算法转换为MultiOutput 回归设置,有人可以帮我创建相同的DMatrix。这是供参考的代码:

需要进一步澄清,请评论。TIA!