如何从.NetStandard类库中引用net40框架程序集?

时间:2017-03-14 00:20:45

标签: c# .net csproj .net-standard project.json

在project.json项目系统下,我能够为每个框架指定框架程序集依赖项。 dotnet docs(现在已过期)显示以下示例。

{
    "frameworks":{
        "net20":{
            "frameworkAssemblies":{
                "System.Net":""
            }
        },
        "net35":{
            "frameworkAssemblies":{
                "System.Net":""
            }
        },
        "net40":{
            "frameworkAssemblies":{
                "System.Net":""
            }
        },
        "net45":{
            "frameworkAssemblies":{
                "System.Net.Http":"",
                "System.Threading.Tasks":""
            }
        },
        ".NETPortable,Version=v4.5,Profile=Profile259": {
            "buildOptions": {
                "define": [ "PORTABLE" ]
             },
             "frameworkAssemblies":{
                 "mscorlib":"",
                 "System":"",
                 "System.Core":"",
                 "System.Net.Http":""
             }
        },
        "netstandard16":{
            "dependencies":{
                "NETStandard.Library":"1.6.0",
                "System.Net.Http":"4.0.1",
                "System.Threading.Tasks":"4.0.11"
            }
        },
    }
}

如何在csproj下为更新的dotnet sdk v1.1.1执行此操作?我想引用net40的System.Configuration,但不能引用netstandard 1.6。

2 个答案:

答案 0 :(得分:3)

谢谢Pankaj - 我带了你的建议的修改版本。关键是使用Reference元素。

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFrameworks>netstandard1.6;net40</TargetFrameworks>
  </PropertyGroup>

  <ItemGroup Condition="'$(TargetFramework)' == 'netstandard1.6'">
    <PackageReference Include="Microsoft.Extensions.Options" Version="1.1.0" />
    <PackageReference Include="Common.Logging" Version="3.4.0-Beta2" />
    <PackageReference Include="NLog" Version="5.0.0-beta06" />
  </ItemGroup>

  <ItemGroup Condition="'$(TargetFramework)' == 'net40'">
    <PackageReference Include="Common.Logging" Version="3.3.0" />
    <PackageReference Include="NLog" Version="4.1.1" />
    <PackageReference Include="Common.Logging.NLog40" Version="3.3.0" />
    <Reference Include="System.Configuration" />
  </ItemGroup>

  <ItemGroup>
    <Folder Include="Console\" />
  </ItemGroup>

</Project> 

答案 1 :(得分:1)

您可以按照以下步骤操作:

  1. 在Visual Studio中右键单击项目并选择“卸载”。
  2. 再次右键单击并编辑项目。
  3. 更改&#34; TargetFramework&#34;所需的.Net Framework版本的价值。例如以下示例将目标框架版本设置为4.5.2

    <PropertyGroup>
       <TargetFramework>net452</TargetFramework>
    </PropertyGroup>
    
  4. 重新加载项目。

  5. 添加System.Configuration程序集的引用。

  6. 再次卸载和编辑项目。

  7. 编辑System.Configuration参考如下。

    <ItemGroup>
      <Reference Include="System.Configuration" Condition="'$(TargetFramework)'=='net452'" />
    </ItemGroup>
    

    可能有一些我不知道的简单方法,但上述方法应该有效。