【问题标题】: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
    相关资源
    最近更新 更多