คุณจำเป็นต้องแก้ไขด้วยตนเองแฟ้มโครงการและเพิ่มsเริ่มต้นtargetFrameworkและพื้นเปลี่ยนเป็นTargetFrameworks จากนั้นคุณพูดถึงMonikerด้วย; ตัวคั่น
นอกจากนี้คุณสามารถใส่การอ้างอิงแพ็คเกจ Nuget ใน ItemGroup แบบมีเงื่อนไขด้วยตนเองหรือใช้ VS Nuget Package Manager
นี่คือลักษณะของ. csproj ของคุณ:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netstandard1.6;net452</TargetFrameworks>
</PropertyGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net452'">
<PackageReference Include="Microsoft.Azure.DocumentDB">
<Version>1.12.0</Version>
</PackageReference>
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'netstandard1.6'">
<PackageReference Include="Microsoft.Azure.DocumentDB.Core">
<Version>1.1.0</Version>
</PackageReference>
</ItemGroup>
</Project>
วิธีแก้ปัญหาอื่นที่ฉันทำในวันนี้เนื่องจากเอกสารขาดหายไปคือฉันสร้างโครงการใน VS2015 และสร้างโครงการ json โดยใช้เอกสารที่มีอยู่และ Intellisense จากนั้นเปิดโซลูชันใน VS2017 และใช้การอัปเกรดในตัว จากนั้นฉันจะดูไฟล์ csproj เพื่อหาวิธีทำให้การกำหนดค่านั้นเกิดขึ้น
การกำหนดเป้าหมายหลายเป้าหมายที่ลึกลับมากขึ้นโดยไม่ต้องใช้Moniker :
ไมโครซอฟต์:
ไม่แนะนำ PCL
แม้ว่า PCL จะได้รับการสนับสนุน แต่ผู้เขียนแพ็กเกจควรสนับสนุน netstandard แทน NET Platform Standard เป็นวิวัฒนาการของ PCL และแสดงถึงความสามารถในการพกพาแบบไบนารีข้ามแพลตฟอร์มโดยใช้ชื่อเล่นเดียวที่ไม่ได้เชื่อมโยงกับรูปแบบคงที่เช่นแบบพกพา -A + b + c
หากคุณต้องการที่จะกำหนดเป้าหมายส่วนตัวแบบพกพาก็ไม่ได้มีการกำหนดไว้ล่วงหน้าชื่อเล่นดังนั้นโปรไฟล์แบบพกพานอกจากนี้ยังไม่สามารถสรุปTargetFrameworkIdentifier
, และTargetFrameworkVersion
TargetFrameworkProfile
ยังไม่ได้กำหนดค่าคงที่ของคอมไพเลอร์โดยอัตโนมัติ ในที่สุดคุณต้องเพิ่มการอ้างอิงแอสเซมบลีทั้งหมดไม่มีให้ตามค่าเริ่มต้น
ตัวอย่างด้านล่างนี้นำมาจากโปรเจ็กต์ที่ใช้dynamic
คีย์เวิร์ดดังนั้นจึงจำเป็นต้องมีMicrosoft.CSharp
แอสเซมบลีเพิ่มเติมดังนั้นคุณจะเห็นว่ามันอ้างอิงสำหรับเป้าหมายต่างๆอย่างไร
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netstandard1.5;net40;portable40-net45+sl5+win8+wp8</TargetFrameworks>
</PropertyGroup>
<PropertyGroup Condition="'$(TargetFramework)'=='portable40-net45+sl5+win8+wp8'">
<TargetFrameworkIdentifier>.NETPortable</TargetFrameworkIdentifier>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<TargetFrameworkProfile>Profile158</TargetFrameworkProfile>
<DefineConstants>$(DefineConstants);PORTABLE158</DefineConstants>
</PropertyGroup>
<ItemGroup Condition="'$(TargetFramework)'=='netstandard1.5'">
<PackageReference Include="Microsoft.CSharp" Version="4.3.0" />
<PackageReference Include="System.ComponentModel" Version="4.3.0" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)'=='net40'">
<Reference Include="Microsoft.CSharp" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)'=='portable40-net45+sl5+win8+wp8'">
<Reference Include="Microsoft.CSharp" />
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Windows" />
</ItemGroup>
</Project>