代码之家  ›  专栏  ›  技术社区  ›  DKhanaf

由于缺少.NET 4.5框架,多目标.NET Standard 2.0和.NET 4.5失败

  •  2
  • DKhanaf  · 技术社区  · 6 年前

    在我的dev box上安装了.net 4.6.2和dotnet-sdk-2.1我最初有4.0,然后是4.5,然后是4.6.2

    我可以在一个项目上运行dotnet build,该项目对netstandard2.0和net45都有多个目标,如下所示:

    <TargetFrameworks>netstandard2.0;net45</TargetFrameworks>
    

    我能够成功地构建它并运行单元测试等。我看到bin目录包含每个目标框架的子目录并包含所有的dll。

    当我试图将我的CI构建在构建在Windows服务器2016上的teamcity代理上时我得到一个错误:

    找不到framework“.NETFramework,Version=v4.5”的引用程序集。

    这让我很困惑,因为这台机器安装了.NET 4.6.2sdk(它还安装了dotnet sdk 2.1)

    在google上搜索,我看到很多人提到框架应该在字典里:

    C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\
    

    当我检查服务器2016机器时,我看到目录和子目录: V4.62 没有子目录 四点五

    但是在我的dev框中,我看到了各种目录:4.5、4.0、3.5、4.6.2。。。

    我无法在服务器2016计算机上安装framework 4.5sdk,因为它已经安装了更高版本所以看来我不能在那台机器上建立目标.NET 4.5。

    作为健全检查,我将csproj文件更改为:

    <TargetFrameworks>netstandard2.0;net462</TargetFrameworks>
    

    我成功地建立了这个项目因此,构建确实有效,但它需要在该计算机上使用4.6.2如果我瞄准它也不行 net46 .

    我在这里做错什么了?
    有没有一种方法可以让我的项目在服务器2016机器上多目标定位到net45?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Camilo Terevinto Chase R Lewis    6 年前

    TL;博士 :安装.NETFramework4.5开发包以生成.NETFramework4.5项目。

    你说你的服务器安装了.NETFramework4.6.2开发包,你正试图用它构建一个.NETFramework4.5项目。

    与运行时包不同,在运行时包中,每个版本都包含(可以说)上一个版本,您需要开发人员包来获得您要瞄准的框架的确切版本。