问题标签 [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 回答
113 浏览

msbuild - 在多目标构建中使用 $(OutputPath)?

现在在 sdk 风格的项目中编写自定义目标以在多目标构建的上下文中对 $(OutputPath) 中的文件执行操作的规范方法是什么?我正在尝试多目标我们的构建以迁移到 net5,我很惊讶这是多么混乱。作为构建的一部分,我们有各种目标需要访问 $(OutputPath) 来复制文件或运行 exe 等。例如,像这样的目标:

这在没有多目标的 sdk 样式项目中运行良好,因为 $(OutputPath) 设置为 bin\debug,这确实是 Foo.exe 所在的位置。但是通过上述,ItemGroup 在 AppendTargetFrameworkToOutputPath 执行其工作以使 $(OutputPath) 设置为 bin\debug\net48 之前得到评估。所以现在我的 ItemGroup 仍在 bin\debug 而不是 bin\debug\net48 中寻找 Foo.exe(即使在定义 $(TargetFramework) 的内部构建中也是如此)。作为依赖 AppendTargetFrameworkToOutputPath 的替代方法,我尝试在 Directory.Build.props 中将 $(OutputPath) 自己定义为 bin$(Configuration)$(TargetFramework) 但因为 $(TargetFramework) 直到我的 csproj 内容之后才由 sdk 设置被评估时会发生同样的问题(我的 ItemGroup 中使用 $(OutputPath) 的路径评估为 bin\debug\)。

我可以设计一些变通方法,但它们似乎都有些笨拙(例如,定义一个先前的目标,其唯一的工作是为未来目标的输入/输出定义 ItemGroups,以便 $(OutputPath) 在它运行时完全构建)。我很惊讶多目标文档似乎没有提到使用此功能真的会干扰您将构建工件作为构建过程的一部分引用的能力?

0 投票
1 回答
55 浏览

xamarin - Xamarin Forms 客户控制库

我需要创建一个可重用的 Xamarin Forms 控件,该控件将在两个单独的项目中使用。它确实需要 IOS 和 Android 的自定义渲染器。问题是我无法确定我们使用哪种项目来为 Xamarin 表单创建可重用的自定义控件库。

每个站点似乎都在谈论创建可以在同一个项目中重用的客户控件。但我需要在一个单独的项目中重用它。

有人可以指出我正确的方向。

0 投票
1 回答
29 浏览

.net - 如何在解决方案中实现多目标?

我们有一个解决方案,它包含一个 Net 5 WPF 应用程序和一个包含 Com 可见类的 .Net Framework 4.7.1 类库。此 dll 将使用 regasm.exe 注册,以便在 Visual Basic 6 中开发的应用程序中使用(是的,确实如此)。

Net 5 应用程序和 .Net Framework 库在五个类库中共享代码。当我启动 Net 5 应用程序时,我希望这些依赖项目针对 Net 5 进行编译。当我构建 .Net Framework Com 可见项目时,我希望依赖项目针对 .Net Framework 4.7.1 进行编译。

如何才能做到这一点?这是一个能让我们的团队保持理智的解决方案吗?还是另一种方法更好?

0 投票
1 回答
53 浏览

c# - 在多平台项目中添加特定平台的引用

试图弄清楚System.Diagnostics.EventLog在多目标项目中使用。目标是:

  • .NET 5
  • .NET 框架 4.8

我的解决方案中有 3 个项目,其他 2 个项目一切正常。引起问题的一个是System.Diagnostics.EventLog.NET 5的引用,因为它需要使用EventLog. 在.NET 框架 4.8上,System.Diagnostics.EventLog命名空间使用System.dll.

我正在寻找一种仅在.NET 5项目中而不是在4.8项目中包含对该库的引用的方法。

当我添加对项目的引用时,似乎它将它添加到两个目标中。有没有办法将它添加到.NET 5而不是.NET framework 4.8

0 投票
0 回答
59 浏览

.net - Xamarin 的多目标库

我正在尝试为 Xamarin(Android、IOS 和 UWP)创建一个多目标库。我检查了一些多目标 xamarin 库的项目文件。(例如Rg.Plugins.Popup、Xamarin.Essentials、MvvmCross)并像这样编辑了我的库(XamTemel.Ortak)的 csproj 文件。

如您所见,我将把平台渲染器放在 Platform/Android-IOS-UWP 等中。这在 Android 上不能正常工作。但是 ColorPicker 库在 UWP 上给了我这个错误。

在此处输入图像描述

我不明白为什么它找不到 ColorPicker。版本号好像没问题。我究竟做错了什么?

这是示例解决方案。

https://drive.google.com/file/d/1PnqFyzDmTBom6GH9YVdbyBvNwikitYlC/view?usp=sharing

0 投票
0 回答
234 浏览

c# - 设置 TargetFramework=net472 仍然给出错误“无法加载文件或程序集'netstandard,版本 = 2.1.0.0”

我有一个包含 ASP.NET Web API 项目的多项目解决方案,所有项目最初都是在 >NET Framework 4.7.2 中构建的。我将解决方案中的一个类库项目更改为多目标:

我完成了所有工作(为目标框架和 #if NET472_OR_GREATER 整个代码中的语句指定不同的 nuget 包)并且能够构建它。使用 if 语句和目标 nuget 包,该项目对于 net472(仅针对 netstandard 的差异)与多目标之前完全相同。

我已更改 .csproj 文件中引用此项目的所有其他项目的项目引用,如下所示:

然而,当我运行 Web API 项目(成功构建)时,我得到了错误:

无法加载文件或程序集 'netstandard, Version=2.1.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' 或其依赖项之一。该系统找不到指定的文件。

我究竟做错了什么?Web API 项目应该不需要 .NET Standard 2.1,对吧?

0 投票
0 回答
17 浏览

.net-5 - 多目标 .NET 库 - 项目引用不起作用

我有一个带有两个项目的 VS2019 解决方案,这两个项目都是多目标的:

我尝试使用以下 csproj 条目从另一个项目中引用一个项目:

现在我在构建时收到以下错误消息:

如何克服这个问题?我究竟做错了什么?

0 投票
0 回答
64 浏览

linux - 根据操作系统使用不同的 NuGet 包

我已经尝试在这里遵循此线程中的所有选项:基于操作系统的不同 NuGet 包

我在 Windows 10 下使用 WSL2 和 Debian 来构建和测试我的项目。

无论我引用哪个包,我都能构建,但是当我尝试运行测试时,我一直收到错误“无法加载共享库'db2app64.dll'或其依赖项之一。为了帮助诊断加载问题,考虑设置LD_DEBUG环境变量:libdb2app64.dll:无法打开共享对象文件:没有这样的文件或目录”

根据我的研究,当您使用错误版本的软件包时会发生此错误,例如 IBM.Data.DB2.Core,它适用于 Windows,并尝试在 linux 上运行。

顺便说一句,我的项目是多目标的,我尝试了从条件到选择的所有方法。

我没有使用 MSBuild 文件,而是在我的 csproj 中使用 Microsoft.SDK 项目 XML。

这是我的项目文件的一部分:

注释部分是我已经测试过的选项。

有人知道吗?

0 投票
0 回答
28 浏览

msbuild - 多目标.Net不编译依赖项/项目

我有一个类库,我们称之为 BO,它是为多目标框架设置的。

这个“BO”有一个 net5.0 项目依赖/对另一个类库的引用,我们称之为 DA,即仅 .NET 5.0。

当我构建 BO 项目时,它不会构建 DA 项目。
我必须先手动构建 DA 项目,然后才能构建 BO 项目。
如果我从 BO 中删除多目标“net40”,那么当我构建 BO 时,DA 将构建。

我错过了什么还是这是一个 Visual Studio 错误?

这是 BO 和 DA 项目文件。

0 投票
1 回答
40 浏览

c# - Xamarin 多框架目标

早上好

我正在为 Xamrin.Forms 构建包。我遵循James Montenango的做法

这是我的 .csproj 的一些重要部分

除了一件重要的事情外,一切都在工作。我想为 Android 和 iOS 实现同一个类的两个实现。

为此,我声明和接口为:

我创建了两个类,一个在 Android 文件夹中,名为:MyService.android.cs,它实现了 IMyService.shared.cs,第二个在 Apple 文件夹中,名为 MyService.apple.cs。

现在就像在上面的库中所做的那样,我想在共享代码中使用服务。

基本上我被困在那里。有谁知道如何前进?