问题标签 [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# - 'HttpClientHandler' 不包含 net461 和 net47 中的 'ClientCertificates' 的定义?
我正在制作一个 NuGet 包,我的 csproj 看起来像这样:
它引用的项目如下所示:
在Package2
项目内部,它具有以下行:
但它不是建立在net461
or中net47
,说:
但是我唯一改变的是从包2的csproj中删除了这个:
谁能帮我理解如何解决它?我真的不想引入整个 NuGet 包来修复这个依赖项,我认为我只是缺少一个程序集,但据我所知,它应该是System.Net.Http
我应该已经引用的地方(另一个也应该如此)它已经依赖的项目)。
c# - 在多目标项目中,我只有更严格的框架的资源可用?
假设我有一个多目标项目,如下所示:
我的目标是 net35、net40、net45 等。Net40 具有 net35 所没有的特性,而 net45 具有 net40 所没有的特性。
所以我的疑问是,当我编写应用程序时,是否可以使用 net45 的所有功能?如果这是真的,如果例如 net35 没有我正在使用的某些功能,它怎么可能编译?
非常感谢。
cloud-foundry - 如何轻松地从带有目的地的 html5 应用程序中使用 nodejs-backend?
我想将 html5 模块与 nodejs 后端“连接”,以便前端可以访问后端的数据库逻辑。我发现,我必须在 scp 中创建一个目标并将其写入 approuter 的 mta.yaml 和 xs-app.js 文件中。不幸的是,它无法正常工作,因为出现错误:“未找到”。
html5 前端只发出一个 ajax 请求。nodjs 后端通过 express 接收请求并使用 db 操作。
我在 scp 中创建了一个名为 backendApi 的目的地。url 是 node_backend 之一。
mta.yaml 文件中的代码片段:
我的 xs-app.js 文件:
它已经通过前端访问后端了一次,但是html5 应用程序存储库存在问题,因此视图不可见。所以我改变了它,但不能回到正题,当我可以通过approuter url 访问后端时。也许路线的正则表达式有问题?
谁能检查我的代码或可以解释它应该如何工作?
visual-studio - .NETStandard 多目标库包在构建时不会恢复
背景:
我创建了一个针对net40
、net462
和netstandard2.0
. 这个库的目的是包装StackExchange.Redis
和一些相关的重新连接逻辑。因为net40
我需要使用旧版本的包而不是新的目标。这是我的csproj
文件:
一般来说,这个库似乎可以工作,并且可以被不同目标框架上的应用程序使用。
问题:
我现在遇到的问题是尝试为这个项目恢复 nuget 包。
当我在 Visual Studio 中构建时,
我从间接引用我的多目标项目的项目中得到了这个错误的几个实例:
生成还原了 NuGet 包。再次构建项目以在构建中包含这些包。有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkID=317568。
我还从直接或间接引用我的多目标库的各种项目中获得了更多此错误的实例。和变化
{Identifier}
,{Namespace}
一些引用我的多目标库中的实体,一些引用依赖于它的项目中的实体。CS0234命名空间“{Namespace}”中不存在类型或命名空间名称“{Identifier}”(您是否缺少程序集引用?)
如果我第二次构建,正如第一个错误所暗示的那样,我会得到同样的错误。
如果我在解决方案资源管理器中右键单击解决方案并在构建后选择 恢复 Nuget 包,它什么也不做,并说:所有包都已安装,没有什么可恢复的。
如果我选择Tools > Nuget Package Manager > Package Manager Console 并输入命令
dotnet restore
,则构建将正常工作。
该项目是解决方案中唯一使用多目标和 csproj<PackageReference>
包引用格式的项目。
我需要恢复包以集成到我的构建中,以便
- 我不需要向我的同事解释如何使用 Package Manager Console解决问题。
- 我可以使用 TeamCity 等第三方工具构建此解决方案,无需额外设置。
失败的尝试:
以下是我迄今为止尝试过的一些事情:
- 添加
dotnet restore
为项目预构建事件。这没有任何作用。 - 使用Visual Studio 解决方案生成事件扩展
dotnet restore
作为解决方案预生成事件运行。这可以在本地工作,但是该扩展通常有点不可靠,并且对 TeamCity 等第三方构建没有帮助。 - 更新 csproj 文件以对文件使用较旧的包引用格式
packages.config
。这引入了许多新的构建错误。
更新
从命令行我得到数百个 CS0246(找不到命名空间名称“Foo”的类型(您是否缺少 using 指令或程序集引用?))和 CS0234 错误,有些甚至引用基类库中的类型,例如系统网。使用
-restore
开关似乎并没有改变这一点。由于那里的输出量,我可能会忽略一些东西。这是一个显示类似行为的最小示例https://github.com/JamesFaix/RestoreFailExample 它会生成一个 CS0246 错误,这有点不同。
dotnet restore
当我在包管理器控制台中尝试时,它仍然失败。我正在使用 VS 15.9.9
我尝试了@Martin Ulrich 的解决方案。csproj
如果不更新我的文件中的引用并删除文件,这似乎不起作用package.config
。为此,我使用了 Visual Studio 内置的从旧格式到 PackageReference 格式的转换。
这会稍微改变我的错误。我发布的示例 repo 可能不够复杂。我现在得到了很多
找不到 {项目文件夹}\packages.config。确保此项目已安装 Microsoft.Bcl.Build,并且 packages.config 位于项目文件旁边。,
一些
此项目引用此计算机上缺少的 NuGet 包。使用 NuGet 包还原下载它们。有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {path to project}\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets。
CS0246
和我之前遇到的一些错误。
CS0234
错误现在消失了。
xamarin - 在模块 Windows.winmd 中找不到类型 Windows.UI.Xaml.Media.XamlLight
构建 Xamarin 表单应用程序。UWP 给出以下错误
在模块 Windows.winmd 中找不到类型 Windows.UI.Xaml.Media.XamlLight。
尝试在多目标类中使用 XamlLight 类时。
使用 MSBuildSDKExtras 进行多目标项目的 net core 3 预览版的 Visual Studio 16.2 问题。
任何帮助将不胜感激
c# - 使用 __ANDROID__ 在跨平台库中编写的代码不会在 Xamarin 表单应用程序中执行
我在我的 Xamarin 表单应用程序中使用多目标库。该库提供了用__ANDROID__
条件编译器符号编写的代码。当我在 Android 上运行应用程序时,它不会执行用符号编写的代码。
多目标库项目正在使用 MSBuild.Sdk.Extras。
我还通过在 Xamarin.Android 项目属性 --> 构建 --> 常规 --> 条件编译符号中定义条件符号来尝试它。但它仍然不运行该特定代码。
在 Android 上运行应用程序时,它应该运行此代码块。
wpf - 如何根据目标设置 WPF 控件的样式?
我有一个需要针对 .NET Framework 3.5 和 4.5 的项目,我想根据构建目标设置 WPF 控件的属性。例如。我有一个文本块,如果构建目标是 3.5,我希望它的背景是 Azure,如果构建目标是 4.5,我希望它的背景是青色我该怎么做?
c# - 多目标框架中的源代码
我有一个包含 3 个项目(NetCoreWeb、NetFrameworkWeb、SharedLibrary)的解决方案
- NetCoreWeb:.Net Core 2.2
- 网络框架网络:网络框架4.5.2
- SharedLibrary:NetCoreApp 2.2 & Net Framework 4.5.2
这是MessageService.cs中的源代码,它位于SharedLibrary项目中:
每次,只有#elif NETSTANDARD中的源代码处于活动状态并可用于调试,即使我将NetFrameworkWeb设置为活动项目:
当我将NetFrameworkWeb设置为活动项目时,如何使#if NETFRAMEWORK块中的源代码处于活动状态,并在#elif NETSTANDARD设置为活动时将其余代码设置为活动?
谢谢,
c# - .NET 多目标输出不包含依赖项
我正在开发一个针对 .net 标准 2.0 和 .net 核心应用程序 3.0 的库(MyLib)。Lib 有一个依赖项(PrimaryDependency),而后者又具有另一个依赖项(OtherDependency),OtherDependency 使用 Microsoft.Windows.Compatibility 包:
我使用 MyLib 编写了两个测试应用程序。一个基于 .net 4.72,一个用于 .netcoreapp 3.1。net472 测试应用程序不需要来自 Microsoft.Windows.Compatibility 的任何东西(所有这些东西都在 .NET 运行时中)。因此,输出确实包含 Tester.exe、MyLib.dll、PrimaryDependency.dll 和 OtherDependency.dll,并且工作正常。
.netcore 测试应用程序输出包含 Tester.exe、Tester.dll、MyLib.dll、PrimaryDependency.dll、OtherDependency.dll 和一堆 System.* 和 Microsoft.* dll(需要的来自 Microsoft.Windows.Compatibility 的部分运行应用程序),它也可以正常工作。
现在,如果我编译(或发布)MyLib.dll,netstandard2.0 输出和 netcoreapp3.0 输出都不包含 MyLib.dll 在 .net 核心上运行所需的 System.* 和 Microsoft.* dll。
由于 MyLib.dll 是一个插件,因此该 dll 的最终使用者没有 MyLib 项目作为参考,因此 System.* 和 Microsoft.* 依赖项丢失。当我编译/公开 MyLib 时,我能做些什么来确保它确实包含所有必要的依赖项?