问题标签 [target-framework]

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 回答
968 浏览

.net - 如何平滑升级 NuGet 包的 targetFramework

我有一个当前针对 .NET 4.5 的 NuGet 包。下一个版本将改为以 .NET 4.5.2 为目标。我对支持这两个框架版本没有兴趣(这些包仅在内部使用),但我确实想让消费者明白他们需要以 4.5.2 为目标。现在,NuGet 似乎将允许 4.5 项目安装我的包,但它将是无操作的(因为没有为 net45 安装 DLL)。

我的问题是,我能做些什么来改善这种体验?理想情况下,当 targetFramework 错误时,我希望安装失败。除此之外,我会接受类似错误消息的东西。

0 投票
1 回答
680 浏览

.net - 是否必须在 NuGet 包中指定所有中间目标框架版本?

有关强制包约定的NuGet 文档解释了:

NuGet 仅从单个库文件夹中复制程序集。例如,假设一个包具有以下文件夹结构:

当包安装在面向 .NET Framework 4 的项目中时,MyAssembly.dll (v2.0) 是唯一安装的程序集。未安装 MyAssembly.Core.dll (v1.0)。(NuGet 以这种方式运行的一个原因是 MyAssembly.Core 可能已合并到 MyAssembly 的 2.0 版中。)

在此示例中,如果您希望将 MyAssembly.Core.dll 安装在面向 .NET Framework 4 的项目中,则必须将其包含在 Net40 文件夹和 Net20 文件夹中。

仅从一个文件夹复制程序集的规则也适用于根 lib 文件夹。假设一个包具有以下文件夹结构:

在面向 .NET Framework 2.0 和 .NET Framework 3.5 的项目中,NuGet 复制 MyAssembly.dll 和 MyAssembly.Core.dll。但与前面的示例一样,在以 .NET Framework 4 为目标的项目中,只会复制 *Net40 文件夹中的 MyAssembly.dll *。

因此,对于第二个示例,提供了将包加载到 .NET 3.5 项目时发生的情况的说明。

不幸的是,第一个示例缺少此信息。.NET 3.5 项目将从第一个示例中显示的 NuGet 包中获取哪些文件?.NET 3.5 项目会简单地没有文件,还是会获得目标项目中向后兼容性支持的最高框架版本的库(对于 .NET 3.5 项目,这意味着库的 .NET 2.0 版本)?

我对这个问题感兴趣的原因有两个具体含义:假设我提供了一个程序集,我已经为其编译了一个 .NET 2.0 版本(它应该用于从 2.0 到 4.6 的所有 .NET Framework 版本),以及一个 . NET 4.6.1 版本(使用 .NET 4.6.1 中引入的一些新 BCL API,旨在用于 .NET 4.6.1 及更高版本)。

1)我可以简单地在.nuspec文件中声明两个“关键”版本:

还是我必须列出所有中间支持的版本:

? 1

2)同样,一旦我发布了这个包,它是否适用于框架的未来版本,或者我需要在 .NET 4.6.2、4.6.3、4.7 或一般情况下更新包,有什么比 .NET 4.6.1 更好的吗?

请注意,我只问一个问题。我只是用三种不同的方式把它写下来来说明它的重要性。

1:此枚举基于撰写本文时支持的目标框架列表。此外,请注意,我不想支持 .NET 1.1(或任何其他框架),因此我不想将任何库直接添加到lib文件夹中,如上面引用的文档中的第二个示例所示。

0 投票
1 回答
3753 浏览

android - Android:TargetFrameworkVersion 大于我的项目

目前,我已经从 nuget 安装了一些软件包。我意识到有警告说目标框架大于我在项目中的设置。当我运行我的应用程序时,该应用程序仍在运行。我是否必须根据所需的包更改我的目标框架。如果我保持原样,我的项目还可以吗?

0 投票
1 回答
113 浏览

.net - “目标框架”如何影响 machine.config 和 GAC 与 Visual Studio 一起使用的方式?

我试图了解如何使用项目的 Target 框架以及它如何影响加载程序集。这是问题所在。

在 Visual Studio 2015 社区中,我的默认目标框架是 .NET 4.6.1。当保留此设置时,我使用 NuGet 将 Npgsql 3.0.7 作为驱动程序安装到本地后端 PostgreSQL 数据库。使用时

DbProviderFactories.GetFactory(ProviderName)

VS 报告找不到 Provider。(在 machine.config 和 GAC 中安装 Npgsql 3.0.7 之后。)

在研究这个(DbProviderFactories Demystified)时,声明是

DbProviderFactories 只需调用 Type.GetType 来加载 Assembly 并创建 Type 的实例。

这使我对 Npgsql 3.0.7 进行了更多研究。当 NuGet 安装程序集时,它将它放置在

C:...\packages\Npgsql.3.0.7\lib\net45\Npgsql.dll

以“net45”为.NET 4.5,我将项目的目标框架更改为.NET 4.5.2。重建后,一切运行良好,没有警告或错误。

那么“目标框架”如何影响 machine.config 和 GAC 的使用方式呢?

感谢您的任何解释(或参考)。

注意:解决方案资源管理器中从未有任何警告表明 Npgsql 程序集与 .NET 4.6.1 不兼容

0 投票
1 回答
239 浏览

wcf - 使用 Visual Studio 2015,如何将 WCF 项目的目标框架从 .NET 4.5.2 降级到 4.0?

虽然我看到很多关于如何降级其他项目类型(如 MVC 等)的帖子,但我找不到如何将 WCF 项目从 4.5.2 降级到 4.0。

0 投票
0 回答
57 浏览

asp.net - ASP.NET 目标框架

问题: 在此处输入图像描述

我执行以下步骤来部署我的 ASP.Net WebApp 并解决问题:

  1. 我通过以下命令安装了正确的网络框架到 IIS

“C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe”-iru

  1. 在此处输入图像描述

  2. 在此处输入图像描述

没有任何效果。

0 投票
1 回答
98 浏览

c# - 什么决定了 Visual Studio 的“目标框架”下拉菜单中显示的内容?

我在不同的解决方案中有两个 Visual Studio 项目,它们在应用程序属性中为目标框架显示不同的选项。由于它是一个打开的菜单,因此很难截屏,因此对于分辨率不够理想,我深表歉意。

在一个项目中,我有以下选择:

.Net 框架

在另一个项目中(在另一个解决方案中),我有以下选项:

.Net标准

是什么导致可用选项发生变化?这两个项目都在 Visual Studio 2017 RC 中运行,并且都在同一台计算机上。

0 投票
1 回答
78 浏览

xamarin - Xamarin 部署错误

我正在尝试在我的 Sony ST23i(Android 4.0.3-API 15)上打开这个应用程序。所以我将“Minimum Android to Target”从“Android 4.3 API Level 18”更改为“Android 4.0.3 API Level 15”。但是现在当我尝试部署应用程序时出现这些错误。

我无法从它返回的 csproj 文件中增加 TargetFrameworkVersion 到 6。如何在我的手机上运行此应用程序?

0 投票
1 回答
220 浏览

c# - 是否有任何可靠(甚至标准化)的方法来创建同时支持多个目标框架的 .NET 库?

我知道这是一个相当普遍的问题,但我无法找到解决以下情况的可靠资源,也无法找到一个地方。所以我决定在这里问,希望能帮助其他人在同样的问题上苦苦挣扎:

作为 .NET 组件的开发人员,我希望支持各种 .NET 目标框架。随着最近引入dot net coredot net 标准的目标框架变体爆炸式增长,这个话题对我来说变得非常重要。

所以,想象一下我正在编写一个 C# 库MyLib(我将其称为“产品”),它编译为MyLib.dll. 我想支持不同范围的目标框架:net35、、、net40等。因此net45netstandard1.2我为每个目标框架创建构建(MSBuild 或 csproj 文件)并将它们捆绑在一个 nuget 包中,遵守 lib 文件夹结构的 nuget 指南. 因此,产品可以从单个构建工件——nuget 包中获得。

对于每个目标框架版本,我都尝试利用其特性和优势,并为较低版本提供 pollyfills 或剥离一些特性。一般来说,无论使用项目的目标框架如何,“产品”都是可用的——我的意思是MyLib应该正确安装 nuget 包,并且应该引用适当的 dll。

因此,出现了几个问题:

  • 在不同的构建中共享相同的程序集版本信息是否正确?喜欢重复使用同一个AssemblyInfo.cs文件?
  • 哪些程序集属性不应该在我的构建之间共享?关于] 属性,我已经开始了另一个线程。[assembly: Guid("...")]其他人也在不同的背景下表现出对该属性的担忧。[assembly: AssemblyTitle("...")]
  • 是否有任何好的或标准化的方法来组织解决方案来支持上述构建结果。大多数项目是否真的在实现这一目标时自谋生路?

到目前为止,我自己的方法是为相同的“产品”为每个目标框架使用单独的 .csproj 文件,但随着开发的进展,支持多个项目可能会变得乏味,即使目标框架数量现在非常重要。

0 投票
1 回答
280 浏览

asp.net - 配置错误。我通过 WebsitePanel 托管了一个网站。该站点具有 targetFramework 4.0。显示以下错误

“/”应用程序中的服务器错误。

配置错误

说明:处理服务此请求所需的配置文件期间发生错误。请查看下面的具体错误详细信息并适当地修改您的配置文件。

解析器错误消息:无法识别的属性“targetFramework”。请注意,属性名称区分大小写。

源错误:

服务器上发生应用程序错误。此应用程序的当前自定义错误设置可防止远程查看应用程序错误的详细信息(出于安全原因)。但是,它可以被本地服务器机器上运行的浏览器查看。

源文件:C:\HostingSpaces\wfirc.org\wfirc.org\wwwroot\web.config 行:9

版本信息:Microsoft .NET Framework 版本:2.0.50727.8669;ASP.NET 版本:2.0.50727.5491