问题标签 [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.
c# - 统一的目标框架名称是什么?
最近我们开发了一个多目标 .net 库,其中我们通过使用以下属性添加了对 UWP、.NetCore、.NetStandard、Xamarion.IOS 和 MonoDroid 的支持
我们尝试扩展对统一项目的支持,但我们不知道统一的 tfm 是什么,当我搜索它时,我遇到了 NET 4.x 这个术语,但我不知道如何将它用作 tfm TargetFrameworks 标签,谁能帮我找出来。
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 文件没有<TargetFramework
or<TargetFrameworks>
属性。它有一个<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
属性。
我正在尝试做的事情可能吗?我无法从我读过的文档中看出。
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-sdk
s. 因此,我在 main 中又添加了一步csproj
:
MyApp.targets 看起来像:
以上解决了消费者与项目相关的问题,但如果消费者使用+non-sdk
则会触发问题,因为此平台在构建期间尝试处理(库也已处理,但预期不同)即使存在条件(适用于这种情况) )。xamarin
mac OS
nativeWindowsLibrary.dll
MacOS-built
Windows-built
OS = Windows
false
所以,我的主要问题是关于如何为上述我们需要支持的情况创建 NuGet 包的指南(示例):
- 非 SDK 和 SDK 的 csproj 文件
- 不同的目标框架
- 平台相关库(放置在
runtimes
)
另外,对提供的配置有什么建议吗?
visual-studio - 当操作来自 NuGet 包时,如何在多目标项目上操作 Packageversion
我有一个带有目标文件的 NuGet 包,它根据当前上下文操作 PackageVersion(当分支是 master 时,它会创建一个预览)。
这在普通项目上运行良好,但是当我在多目标项目中使用它时它不起作用。
我该如何纠正?
我附上了一个示例项目。https://1drv.ms/u/s!At1IZ7t_aXW-iNRchOhliGP8dunGHg?e=11dW4F 重现问题:
- 解压所有文件
- 你需要一个本地 NuGet 源
- 在 BuildConfig/publish.bat 中输入本地 NuGet 源的名称
- 在 BuildConfig 中调用 publish.bat
- 在消费者中运行“dotnet pack”
这将创建一个版本为 1.0.0 的消费者包。这应该是 1.0.0-xdev。
当您更改 Consumer.csproj 以便使用 TargetFramework 时,会创建正确的版本
我已尝试在目标之外进行版本修改,但这会导致在 Directory.Build.Targets 文件中指定版本号时出现问题
我尝试了不同的 BeforeTargets,但没有任何效果。
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 包目前的样子:
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。
有人可以帮我解决这个问题吗?
.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
只能在它可用的情况下定位,但文档很少。
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.csproj
net45
版本net20
参考,NLog 2.1.0
一。net45
NLog 4.7.8
问题:现在我想NLog 4.7.8
在Api.csproj
我Manage Packages for Solution
的.Api.csproj
Lib.csproj
2.1.0
我尝试选择这两个项目并安装它,但是由于NLog 4.7.8
与net20
.
所以真的,问题是 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
多目标。
python - 多输出 XGBoost 回归器中的 DMatrix
我正在尝试将超参数调整算法转换为MultiOutput 回归设置,有人可以帮我创建相同的DMatrix。这是供参考的代码:
需要进一步澄清,请评论。TIA!