【问题标题】:Is it possible to use the .NET Core 2 SDK tooling to build a class library which targets .NET Framework 2.0?是否可以使用 .NET Core 2 SDK 工具构建面向 .NET Framework 2.0 的类库?
【发布时间】:2018-04-21 18:14:54
【问题描述】:

这似乎是很久以前的事了,但我仍然需要开发一个面向 .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 页面显示 net20 支持的 TFM。作为让我们看看会发生什么的努力,我针对 net20 并遇到了以下错误消息:

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

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

【问题讨论】:

    标签: .net build .net-core .net-framework-version dotnet-sdk


    【解决方案1】:

    其实,.NET 2.0 并不难找到,尽管微软不喜欢让它变得简单

    (i).NET Framework 2.0 Software Development Kit (SDK) (x64) 或

    (ii).NET Framework 2.0 Software Development Kit (SDK) (x86)

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

    【讨论】:

    • 感谢您分享这些链接。
    【解决方案2】:

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

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

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

    【讨论】:

    • 我希望在基于 CLR 2.0 的构建中使用 .NET CLI。从你说的情况来看,这是不可能的。当您说“4.*”时,您实际上是指包含 4.0 吗?还是说你真的是 4.5+?
    • 我的意思是 4.0+,尽管可能很难为它获得一个工作目标包。可能有一些方法可以覆盖一些 msbuild 变量来指定 net20/net35 参考程序集的位置,但是你'最好使用 VS 中的 msbuild.exe 或 mono 的 msbuild(它能够在它支持的所有平台上为 .net 核心和完整的 .net 构建 SDK 项目)
    猜你喜欢
    • 1970-01-01
    • 2020-04-07
    • 1970-01-01
    • 1970-01-01
    • 2016-10-03
    • 1970-01-01
    • 1970-01-01
    • 2017-03-11
    • 1970-01-01
    相关资源
    最近更新 更多