Di bawah sistem proyek project.json saya dapat menentukan dependensi rakitan kerangka kerja per kerangka kerja. dokumen dotnet (sekarang kedaluwarsa) ditampilkan contoh di bawah ini.

{
    "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"
            }
        },
    }
}

Bagaimana saya melakukan ini di bawah csproj untuk dotnet sdk v1.1.1 yang diperbarui? Saya ingin merujuk System.Configuration untuk net40, tetapi tidak untuk netstandard 1.6.

1
Dav Evans 14 Maret 2017, 03:20

2 jawaban

Jawaban Terbaik

Terima kasih Pankaj - Saya menggunakan versi modifikasi dari saran Anda. Kuncinya hanya menggunakan elemen Referensi.

<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> 
4
Dav Evans 14 Maret 2017, 02:14

Anda dapat mengikuti langkah-langkah yang disebutkan di bawah ini:

  1. Di Visual Studio klik kanan proyek dan pilih bongkar.
  2. Sekali lagi klik kanan dan edit proyek.
  3. Ubah nilai "TargetFramework" ke versi .Net Framework yang diperlukan. misalnya Contoh berikut menetapkan versi kerangka kerja target ke 4.5.2

    <PropertyGroup>
       <TargetFramework>net452</TargetFramework>
    </PropertyGroup>
    
  4. Muat ulang proyek.

  5. Tambahkan referensi rakitan System.Configuration.

  6. Bongkar dan edit proyek lagi.

  7. Edit referensi System.Configuration sebagai berikut.

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

    Mungkin ada jalan keluar mudah yang tidak saya sadari tetapi metode di atas seharusnya berhasil.

1
Pankaj Kapare 14 Maret 2017, 01:00