2

这似乎是很久以前的事了,但我仍然需要开发一个面向 .NET Framework 2.0 的类库。我们的构建脚本需要 Visual Studio 2010 并调用 devenv.exe,将路径传递给我们的解决方案文件。

我们有一个新要求,即生成一个面向 .NET Core 2.0 的类库(长期目标是面向 .NET Standard 版本)。随着 .NET 的重新设计,我们不再需要 IDE,而是需要 .NET Core 2 SDK 工具。

我注意到dotnet build命令接受一个--framework参数。Target Frameworks页面显示受支持的net20TFM。作为让我们看看会发生什么努力,我针对 net20 并遇到了以下错误消息:

C:\cli\sdk\2.0.0\Microsoft.Common.CurrentVersion.targets(1122,5):错误 MSB3644:未找到框架“.NETFramework,Version=v2.0”的参考程序集。要解决此问题,请为此框架版本安装 SDK 或 Targeting Pack,或者将您的应用程序重新定位到已安装 SDK 或 Targeting Pack 的框架版本。请注意,程序集将从全局程序集缓存 (GAC) 中解析,并将用于代替引用程序集。因此,您的程序集可能无法正确定位于您想要的框架。[C:\path\to\my\project.csproj]

在 Visual Studio 2017 中我的项目属性的 Application 选项卡中,Target Framework 下拉列表有一个Install other frameworks...链接。列出的最早的 .NET Framework 版本是 3.5 SP1,并且没有Dev Pack参考。我正在尝试做的事情可能吗?如果是这样,我在哪里可以找到 .NET Framework 2.0 目标包?

4

2 回答 2

1

dotnet build当面向低于 4.* 的 .NET 版本时,无法使用.NET CLI(和类似命令),因为 MSBuild 对这些框架的工作方式不同,并且 MSBuild 的 .NET Core 版本无法执行所需的操作。但是,您可以msbuild.exe从开发人员命令提示符处使用。

为了构建 2.* CLR,您需要安装框架。目标包是 4.* 概念,msbuild 希望能够将已安装的框架用于面向 .NET < 4.* 的应用程序。(具体来说:MSBuildTaskHost.exe将使用 .NET 3.5 框架运行)。

虽然我没有尝试为 2.0 构建,但构建 3.5(这是唯一仍受 microsoft (3.5 SP1) 支持的版本)是可能的并且受支持。

于 2017-11-08T22:15:31.900 回答
0

实际上,尽管微软不喜欢让它变得容易,但找到 .NET 2.0 并不难

(i) .NET Framework 2.0 软件开发工具包 (SDK) (x64)

(ii) .NET Framework 2.0 软件开发工具包 (SDK) (x86)

另一个问题是使用 .NET Framework 2.0 作为目标来获取 .NET Core 构建系统。Roslyn 支持以 .NET 2.0 为目标,但很难判断 .NET Core 构建系统的行为方式。但是,由于一切都是开源的,因此肯定可以完成。唯一的问题是它需要多少工作。尝试使用我指出的框架并发布结果,也许我可以帮助解决一些问题。

于 2017-11-08T22:14:51.090 回答