คุณต้องเพิ่มการอ้างอิงถึง netstandard ของแอสเซมบลีเวอร์ชัน = 2.0.0.0


124

โครงการนี้เป็น ASP.NET MVC Web App ที่กำหนดเป้าหมายไปที่. NET Framework 4.6.1 การ

ทันใดนั้น (แพ็คเกจ NuGet บางตัวได้รับการอัพเกรด) ฉันเริ่มได้รับข้อผิดพลาดต่อไปนี้ระหว่างรันไทม์:

CS0012: ประเภท 'System.Object' ถูกกำหนดในแอสเซมบลีที่ไม่ได้อ้างอิง คุณต้องเพิ่มการอ้างอิงถึงแอสเซมบลี 'netstandard, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = cc7b13ffcd2ddd51'

ในมุมมองหลักของฉันIndex.cshtmlในบรรทัดที่ฉันใช้ประโยชน์จาก@Html.ActionLink

ฉันมี. NET Core SDK 2.0 และ. NET Framework 4.7.1 ติดตั้งอยู่ในเครื่องของฉัน แต่ฉันไม่ต้องการรวมข้อมูลอ้างอิงเข้าไป นี่คือเว็บแอป. NET Framework เท่านั้นซึ่งโฮสต์บน Windows IIS โดยที่กรอบงานที่ติดตั้งคือ 4.6.1 ไม่มี NET Core ติดตั้งในเซิร์ฟเวอร์

เหตุใดจึงขอให้เพิ่มการอ้างอิงnetstandard? ฉันจะแก้ไขได้อย่างไรโดยไม่ต้องอ้างอิงnetstandardแต่เป็น Windows .NET Framework 4.6.1 แบบเต็ม

ฉันได้ตรวจสอบการกระทำก่อนหน้านี้ซึ่งใช้งานได้ดีและฉันยังคงได้รับข้อผิดพลาดนี้ ดังนั้นจึงไม่เกี่ยวข้องกับแพ็คเกจ NuGet ที่กำลังอัปเกรด ดูเหมือนจะเป็นบางอย่างในเครื่อง dev ในพื้นที่ของฉัน

หากเผยแพร่แอปไปยังไดเร็กทอรีและเรียกใช้ด้วย IIS จะใช้งานได้

ลิงก์ไปยัง. csproj gist

packages.config

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Antlr" version="3.5.0.2" targetFramework="net46" />
  <package id="BundleTransformer.Core" version="1.9.69" targetFramework="net46" />
  <package id="BundleTransformer.Handlebars" version="1.9.73" targetFramework="net46" />
  <package id="BundleTransformer.Less" version="1.9.69" targetFramework="net46" />
  <package id="BundleTransformer.Yui" version="1.9.52" targetFramework="net46" />
  <package id="Dapper" version="1.42" targetFramework="net46" />
  <package id="EcmaScript.Net" version="1.0.1.0" targetFramework="net46" />
  <package id="EntityFramework" version="6.0.0" targetFramework="net46" />
  <package id="Glimpse" version="1.8.6" targetFramework="net46" />
  <package id="Glimpse.AspNet" version="1.9.2" targetFramework="net46" />
  <package id="Glimpse.Mvc5" version="1.5.3" targetFramework="net46" />
  <package id="JavaScriptEngineSwitcher.Core" version="1.2.4" targetFramework="net46" />
  <package id="JavaScriptEngineSwitcher.V8" version="1.3.0" targetFramework="net46" />
  <package id="jQuery" version="2.1.3" targetFramework="net46" />
  <package id="jQuery.Validation" version="1.13.1" targetFramework="net46" />
  <package id="LowercaseDashedRoute" version="1.0.14" targetFramework="net46" />
  <package id="Microsoft.AspNet.Mvc" version="5.2.3" targetFramework="net46" />
  <package id="Microsoft.AspNet.Razor" version="3.2.3" targetFramework="net46" />
  <package id="Microsoft.AspNet.Web.Optimization" version="1.1.3" targetFramework="net46" />
  <package id="Microsoft.AspNet.WebApi" version="5.2.3" targetFramework="net46" />
  <package id="Microsoft.AspNet.WebApi.Client" version="5.2.3" targetFramework="net46" />
  <package id="Microsoft.AspNet.WebApi.Core" version="5.2.3" targetFramework="net46" />
  <package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.3" targetFramework="net46" />
  <package id="Microsoft.AspNet.WebPages" version="3.2.3" targetFramework="net46" />
  <package id="Microsoft.jQuery.Unobtrusive.Validation" version="3.2.3" targetFramework="net46" />
  <package id="Microsoft.Owin" version="3.0.1" targetFramework="net46" />
  <package id="Microsoft.Owin.Host.SystemWeb" version="3.0.1" targetFramework="net46" />
  <package id="Microsoft.SqlServer.Compact" version="4.0.8876.1" targetFramework="net46" />
  <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net46" />
  <package id="Moment.js" version="2.10.2" targetFramework="net46" />
  <package id="Newtonsoft.Json" version="10.0.3" targetFramework="net46" />
  <package id="NWebsec" version="5.1.1" targetFramework="net46" />
  <package id="NWebsec.Core" version="2.1.0" targetFramework="net46" />
  <package id="NWebsec.Mvc" version="5.1.1" targetFramework="net46" />
  <package id="Owin" version="1.0" targetFramework="net46" />
  <package id="Respond" version="1.4.2" targetFramework="net46" />
  <package id="Sendgrid" version="6.3.0" targetFramework="net46" />
  <package id="SendGrid.SmtpApi" version="1.3.1" targetFramework="net46" />
  <package id="Serilog" version="2.6.0" targetFramework="net46" />
  <package id="Serilog.Enrichers.Environment" version="2.1.2" targetFramework="net46" />
  <package id="Serilog.Sinks.File" version="3.2.0" targetFramework="net46" />
  <package id="Serilog.Sinks.RollingFile" version="3.3.0" targetFramework="net46" />
  <package id="Serilog.Sinks.Sentry" version="2.1.4" targetFramework="net46" />
  <package id="SerilogWeb.Classic" version="2.1.17" targetFramework="net46" />
  <package id="SharpRaven" version="2.2.0" targetFramework="net46" />
  <package id="System.Data.SQLite" version="1.0.108.0" targetFramework="net46" />
  <package id="System.Data.SQLite.Core" version="1.0.108.0" targetFramework="net46" />
  <package id="System.Data.SQLite.EF6" version="1.0.108.0" targetFramework="net46" />
  <package id="System.Data.SQLite.Linq" version="1.0.108.0" targetFramework="net46" />
  <package id="Twitter.Bootstrap.Less" version="3.3.4" targetFramework="net46" />
  <package id="WebActivatorEx" version="2.0.6" targetFramework="net46" />
  <package id="WebGrease" version="1.6.0" targetFramework="net46" />
  <package id="YUICompressor.NET" version="2.7.0.0" targetFramework="net46" />
</packages>

เมื่อเผยแพร่แอปโดยใช้ VS2017 ไปยังระบบไฟล์ฉันได้รับคำเตือนต่อไปนี้ในผลลัพธ์:

แอสเซมบลีต่อไปนี้มีการอ้างอิงบนเวอร์ชันของ. NET Framework ที่สูงกว่าเป้าหมายและอาจโหลดไม่ถูกต้องระหว่างรันไทม์ทำให้เกิดความล้มเหลว: netstandard, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = cc7b13ffcd2ddd51 การอ้างอิง ได้แก่ : System.Transactions, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089 คุณควรตรวจสอบให้แน่ใจว่าแอสเซมบลีที่อ้างอิงนั้นถูกต้องสำหรับเฟรมเวิร์กเป้าหมายหรือตรวจสอบให้แน่ใจว่าเฟรมเวิร์กเป้าหมายที่คุณกำหนดแอดเดรสนั้นเป็นของแอสเซมบลีที่ขึ้นต่อกัน

แต่ฉันไม่พบอะไรSystem.Transactionsเลย ฉันจะค้นหาสิ่งที่อ้างถึงได้อย่างไร


1
คุณใช้แพ็คเกจ NuGet อะไร คุณแน่ใจหรือไม่ว่าคุณไม่ได้อ้างถึง ASP.NET Core one?
Ricardo Peres

@RicardoPeres VS2017 ไม่อนุญาตให้คุณเพิ่มแพ็คเกจที่กำหนดเป้าหมายกรอบงานที่แตกต่างจากที่โครงการกำหนดเป้าหมาย ฉันได้ถอนการติดตั้งและติดตั้งแพ็คเกจทั้งหมดใหม่แล้ว แต่ข้อผิดพลาดยังเหมือนเดิม ฉันไม่เข้าใจว่าทำไมมันถึงเกิดขึ้นและทำไมในช่วงรันไทม์ ...
emzero

2
System.Data.SQLite.Coreแพคเกจจะขึ้นอยู่กับ .NET หลัก (หรือ .NET มาตรฐานผมไม่ได้ไปหาแหล่งที่มาหรือเอกสาร) ดูข้อความแสดงข้อผิดพลาดที่ท้ายสุดของไฟล์โครงการของคุณ
McGuireV10

ทำไมคุณถึงบอกว่าขึ้นอยู่กับ. NET Core? ฉันกำลังดูไฟล์packages\System.Data.SQLite.Core.1.0.108.0\libไดเร็กทอรีและมีโฟลเดอร์สำหรับ. NET Framework แต่ละเวอร์ชันรวมถึง 4.6 ซึ่งเป็นสิ่งที่ฉันใช้ ฉันไม่คิดว่านั่นเป็นปัญหาที่นี่
emzero

2
เมื่อฉันเผชิญกับปัญหาที่แก้ไขไม่ได้เช่นนี้สิ่งที่ฉันทำคือ 1) สังเกตสิ่งที่เป็นข้อมูลอ้างอิงของโครงการ (หรือบันทึกไฟล์. csproj ไว้ที่ไหนสักแห่ง) 2) ลบไฟล์ package.config ลบการอ้างอิงภายนอกทั้งหมด (หรือคุณสามารถเขียนโครงการใหม่ได้ ตั้งแต่เริ่มต้นเฉพาะกับไฟล์คงเดิม, .cs ฯลฯ ), 3) กำหนดค่า VS Nuget เพื่อใช้ Package Reference แทน Legagy package.config mode docs.microsoft.com/en-us/nuget/reference/…และ 4) เพิ่มการอ้างอิงที่จำเป็นทั้งหมดกลับ ส่วนใหญ่แล้วมันใช้งานได้และฉันไม่รู้ว่าทำไมมันถึงล้มเหลวมาก่อน
ไซมอนมูเรียร์

คำตอบ:


182

ฉันคิดว่าวิธีแก้ปัญหาอาจเป็นปัญหานี้ใน GitHub :

ลองเพิ่มการอ้างอิงมาตรฐานใน web.config ดังนี้: "

<system.web>
  <compilation debug="true" targetFramework="4.7.1" >
    <assemblies>
      <add assembly="netstandard, Version=2.0.0.0, Culture=neutral, 
            PublicKeyToken=cc7b13ffcd2ddd51"/>
    </assemblies>
  </compilation>
  <httpRuntime targetFramework="4.7.1" />

ฉันรู้ว่าคุณกำลังใช้ 4.6.1 แต่ตัวเลือกของ. NET 4.7.1 มีความสำคัญเนื่องจาก Framework เวอร์ชันเก่าไม่สามารถทำงานร่วมกับ. NET Standard 2.0 ได้อย่างสมบูรณ์

ฉันรู้สิ่งนี้จากประสบการณ์ที่เจ็บปวดเมื่อฉันเปิดตัวไลบรารีมาตรฐาน. NET ฉันมีปัญหามากมายเกี่ยวกับแพ็คเกจ NUGET และการอ้างอิงที่ทำลาย การเปลี่ยนแปลงอื่น ๆ ที่คุณต้องพิจารณาคือการอัปเกรดเป็นPackageReferencesแทนpackage.configไฟล์

ดูคำแนะนำนี้และคุณยังอาจต้องการเครื่องมือที่จะช่วยให้การปรับรุ่น ต้องใช้เวอร์ชัน VS 15.7 ตอนปลาย


2
ฉันคิดว่าใครก็ตามที่มาถึงที่นี่ควรดูคำแนะนำที่ยอดเยี่ยมเกี่ยวกับการเขียน libs โอเพนซอร์สโดยผู้เขียน Newtonsoft.JSON: docs.microsoft.com/en-us/dotnet/standard/library-guidance/… - โดยเฉพาะ "หลีกเลี่ยง รวมทั้ง netstandard1.x "เป้าหมายและใช้. NET 4.7.2 เป็นเวอร์ชันจริงต่ำสุดที่รองรับ. netstandard 2.0
Quango

สิ่งที่จำเป็นเมื่ออัปเกรดเป็น v4.7.2 (แอปที่ไม่ใช่คอร์) และมีข้อยกเว้นดังต่อไปนี้: "ประเภท 'DateTime' ถูกกำหนดในแอสเซมบลีที่ไม่ได้อ้างอิงคุณต้องเพิ่มการอ้างอิงไปยังแอสเซมบลี 'netstandard, Version = 2.0.0.0, วัฒนธรรม = เป็นกลาง PublicKeyToken = cc7b13ffcd2ddd51 '
Ted

สิ่งนี้ต้องเพิ่มในการอ้างอิงในไฟล์ csproj ด้วยหรือว่าจำเป็นใน web.config เท่านั้น?
petrosmm

1
คำตอบที่ดี ขอบคุณ ฉันอยู่ระหว่างการอัปเกรดแพ็คเกจยูทิลิตี้เก่าและตบมาตรฐานใหม่ 2.0 แทน โดยเฉพาะเว็บแอปนี้มีปัญหาเนื่องจาก<add assembly="netstandardไม่มีและ httpRuntime ไม่ใช่ 4.7.1- นี่คือคำตอบ! ขอบคุณ !!
Piotr Kula

ในกรณีของเราเรามีแอสเซมบลี 2.0 มาตรฐานหลายตัวที่ใช้โดยโปรเจ็กต์ 4.7.2 ASP.Net แต่เราได้เพิ่ม JsonConverter จาก System.Text.Json.Serialization namespace เป็นหนึ่งในโปรเจ็กต์ 2.0 มาตรฐานและนั่นทำให้เกิดข้อผิดพลาดนี้ โซลูชันนี้ช่วยแก้ปัญหาของเราได้
ShaneH

35

การแก้ไขไฟล์. csproj ด้วยตนเองและการเพิ่มข้อมูลอ้างอิงด้านล่างนั้นใช้ได้ผลกับฉัน

<Reference Include="netstandard" />

ขอขอบคุณที่ Fahad Alshaya ผู้แนะนำมันนี่


สิ่งนี้ควรใส่ไว้ที่ไหนในไฟล์โครงการ ภายใน "แท็ก" อื่นใด
Ulysses Alves

1
@UlyssesAlves ที่ไหนสักแห่งถัดจากแท็กอ้างอิงอื่น ๆ
kamilk

@kamilk "ที่ไหนสักแห่งติดกับที่อื่น" ไม่ถูกต้องมาก ฉันดูโครงการอื่น ๆ แต่น่าเสียดายที่สิ่งนี้ไม่ได้ผลสำหรับฉันและฉันตัดสินใจที่จะโจมตีปัญหานี้จากมุมมองอื่นซึ่งไม่เกี่ยวข้องกับการเปลี่ยนเวอร์ชัน. net ของโครงการ
Ulysses Alves

1
อันนี้ใช้ได้ผลสำหรับฉันฉันต้องติดตั้ง NetStandard.Library ผ่าน NuGet ด้วย
David Acero

สิ่งเล็ก ๆ น้อย ๆ ที่ "ได้รับ" ... คำตอบที่ดี
Benj Sanders

15

ฉันต้องรวบรวมคำตอบของคนอื่นในชุดข้อความนี้

  1. ติดตั้ง NetStandard.Library ผ่าน NuGet
  2. แก้ไขไฟล์. csproj ด้วยตนเองและเพิ่มข้อมูลอ้างอิง <Reference Include="netstandard" />
  3. การขยายโครงการ -> การอ้างอิงใน VS Solution Explorer คลิกขวาที่ 'netstandard' และแสดงหน้าคุณสมบัติและตั้งค่า "Copy Local" เป็น true

3
การตั้งค่า 'คัดลอกในเครื่อง' ทำเพื่อฉัน
FrenkyB

1
โซลูชันนี้ทำงานได้อย่างสมบูรณ์และโปรเจ็กต์ไม่ได้ขึ้นอยู่กับการคอมไพล์ในโหมดดีบัก
DarkHawk

6

ฉันเคยเจอสิ่งนี้มาก่อนและลองทำหลาย ๆ อย่างได้แก้ไขให้ฉัน:

  • ลบโฟลเดอร์ bin หากมีอยู่
  • ลบโฟลเดอร์. vs ที่ซ่อนอยู่
  • ตรวจสอบให้แน่ใจว่าติดตั้งชุดการกำหนดเป้าหมาย 4.6.1 แล้ว
  • Last Ditch Effort: เพิ่มการอ้างอิงไปยัง System.Runtime (คลิกขวาที่โปรเจ็กต์ -> เพิ่ม -> การอ้างอิง -> ทำเครื่องหมายในช่องถัดจาก System.Runtime) แม้ว่าฉันคิดว่าฉันเคยคิดว่าหนึ่งในข้อใดข้างต้นได้แก้ไขแล้ว ในการทำสิ่งนี้

นอกจากนี้หากนี่เป็นแอป. net core ที่ทำงานบนเฟรมเวิร์กแบบเต็มฉันพบว่าคุณต้องรวมไฟล์global.jsonที่รูทของโปรเจ็กต์ของคุณและชี้ไปที่ SDK ที่คุณต้องการใช้สำหรับโปรเจ็กต์นั้น:

{
  "sdk": {
    "version": "1.0.0-preview2-003121"
  }
}

2
พยายามทั้งหมดไม่มีโชค นี่ไม่ใช่โครงการ. NET Core อย่างที่ฉันพูดไป นี่เป็น. NET Framework 4.6.1 ปกติ
emzero

ปิด VS ลบถังลบ. vs - ฉันมีความสุข
Reed Shilts


5

หลังจากอัปเกรดจาก 4.6.1 framework เป็น 4.7.2 เราเริ่มได้รับข้อผิดพลาดนี้:

"ประเภท 'System.Object' ถูกกำหนดในแอสเซมบลีที่ไม่ได้อ้างอิงคุณต้องเพิ่มการอ้างอิงไปยังแอสเซมบลี 'netstandard, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = cc7b13ffcd2ddd51'" และท้ายที่สุดวิธีแก้ปัญหาคือการเพิ่มการอ้างอิงแอสเซมบลี "มาตรฐาน" ที่กล่าวถึงข้างต้น:

<compilation debug="true" targetFramework="4.7.1" >
    <assemblies>
      <add assembly="netstandard, Version=2.0.0.0, Culture=neutral, 
            PublicKeyToken=cc7b13ffcd2ddd51"/>
    </assemblies>
  </compilation>

1
นี้ได้ผล อีกสิ่งหนึ่งที่ใช้งานได้ (โดยไม่มีการเปลี่ยนแปลงนี้) คือการเพิ่ม<Reference Include="netstandard" />ไฟล์ csproj แต่ ... จะใช้ได้ก็ต่อเมื่อคุณตั้งค่า CopyLocal เป็น true สิ่งนี้ไม่มีเหตุผลใด ๆ
Triynko

1

แม้ว่านี่จะเป็นกระทู้เก่า แต่ฉันก็มีปัญหาเดียวกันในวันนี้เมื่อสัปดาห์ที่แล้วฉันได้อัปเดตแพ็คเกจ NuGet และแม้ว่าเว็บไซต์ MVC จะทำงานได้ดีบนเครื่อง dev ของฉันเมื่อฉันเผยแพร่ไปยังเซิร์ฟเวอร์ทดสอบ แต่ก็ล้มเหลว

ฉันอ่านโพสต์มากมาย แต่ไม่ได้ผล ในที่สุดฉันก็เปรียบเทียบ DLL ในถังขยะในเครื่องกับเซิร์ฟเวอร์ทดสอบและพบว่า netstandard.dll ไม่ได้อัปโหลดเมื่ออัปโหลดเว็บไซต์แล้วทำงานได้ดีไม่แน่ใจว่าทำไมการปรับใช้เว็บ VS2017 จึงไม่เผยแพร่ DLL

สิ่งที่ควรระวังในกรณีที่ไม่มีสิ่งใดที่เหมาะกับคุณ


1

ฉันพบสิ่งนี้เมื่ออัปเกรด. NET Core 1.1 เป็น 2.1

ผมทำตามคำแนะนำที่ระบุไว้ที่นี่

พยายามลบ<RuntimeFrameworkVersion>1.1.1</RuntimeFrameworkVersion>หรือ<NetStandardImplicitPackageVersion>ส่วนใน. csproj


1

เราเริ่มได้รับข้อผิดพลาดนี้บนเซิร์ฟเวอร์ที่ใช้งานจริงหลังจากปรับใช้แอปพลิเคชันที่ย้ายจาก 4.6.1 เป็น 4.7.2

เราสังเกตว่าไม่มีการติดตั้ง. NET framework 4.7.2 ที่นั่น เพื่อแก้ปัญหานี้เราได้ทำตามขั้นตอนต่อไปนี้:

  1. ติดตั้ง. NET Framework 4.7.2 จาก:

    https://support.microsoft.com/en-us/help/4054530/microsoft-net-framework-4-7-2-offline-installer-for-windows

  2. รีสตาร์ทเครื่อง

  3. ยืนยันเวอร์ชัน. NET Framework ด้วยความช่วยเหลือของ ฉันจะค้นหาเวอร์ชัน. NET ได้อย่างไร

การเรียกใช้แอปพลิเคชันอีกครั้งด้วย. Net Framework 4.7.2 เวอร์ชันที่ติดตั้งบนเครื่องช่วยแก้ไขปัญหาได้


1

ฉันกำลังประสบปัญหาเดียวกันฉันทำตามการตั้งค่าตอนนี้แอปพลิเคชันทำงานได้ดี

1-

<compilation debug="true" targetFramework="4.7.1">
      <assemblies>
        <add assembly="netstandard, Version=2.0.0.0, Culture=neutral, 
      PublicKeyToken=cc7b13ffcd2ddd51"/>
      </assemblies>
    </compilation>

2- เพิ่มการอ้างอิง

 **C:\Program Files (x86)\Microsoft Visual
Studio\2017\Professional\Common7\IDE\Extensions\Microsoft\ADL
 Tools\2.4.0000.0\ASALocalRun\netstandard.dll**

3-

Copy Above Path Dll to Application Bin Folder on web server


เอกสารนี้อยู่ที่ไหน ทุกคนจะเดาว่าจะใส่บรรทัดนี้ในไฟล์ web.config ได้อย่างไร? สิ่งที่ทำงานได้ดีไม่แพ้กันคือการเพิ่มบรรทัดใน csproj ที่อ้างอิง "netstandard" และตั้งค่า CopyLocal เป็น true ถึงอย่างนั้นก็ไม่ได้ระบุว่าเป็นข้อมูลอ้างอิงที่เป็นไปได้ในกล่องโต้ตอบการอ้างอิงที่ใดก็ได้ดังนั้นวิธีเดียวที่จะได้รับคือการเพิ่มด้วยตนเอง นี่มันบ้า และฉันกำลังกำหนดเป้าหมาย. NET 4.7.2 ซึ่งควรจะเข้ากันได้กับมาตรฐาน. NET อย่างสมบูรณ์ แต่ฉันต้องทำตามขั้นตอนที่คลุมเครือเหล่านี้เพื่อให้มันใช้งานได้
Triynko

0

อาจต้องทำอย่างใดอย่างหนึ่งต่อไปนี้:

  1. ติดตั้ง SDK ที่ใหม่กว่า
  2. ใน. csproj ตรวจสอบ Reference Include = "netstandard"
  3. ตรวจสอบเวอร์ชันแอสเซมบลีในแท็กการคอมไพล์ใน Views \ Web.config และ Web.config

โอเคหวังว่าเราเกือบจะถึงที่นั่นแล้ว "ฉันเพิ่มการอ้างอิงถึง NETStandard.Library แทน NETStandard.Library.NETFramework" ตรวจสอบโพสต์นี้: github.com/dotnet/standard/issues/391
ivw

โดยปกติ System.Transactions ไม่ได้เป็นส่วนหนึ่งของการอ้างอิงของคุณให้ลองเพิ่มในการอ้างอิงของคุณโดย: คลิกขวาที่ข้อมูลอ้างอิงของคุณหากคุณกำลังใช้ Web Application หรือใน Project ของคุณหากคุณกำลังใช้งานเว็บไซต์ ค้นหา System.Transactions ในการอ้างอิง. NET คุณควรพบ System.Transactions ในข้อมูลอ้างอิงของคุณ
ivw


0

ฉันประสบปัญหานี้เมื่อพยายามเพิ่มการพึ่งพา. NETStandard ไปยังไลบรารี. NET4.6.1 และรวบรวมใน Linux ด้วย Mono 4.6.2 (เวอร์ชันที่มาพร้อมกับ Ubuntu 16.04)

ในที่สุดฉันก็แก้ไขได้ในวันนี้ วิธีแก้ปัญหาต้องทำทั้งสองสิ่งนี้:

  1. เปลี่ยน<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>ไป<TargetFrameworkVersion>v4.7.1</TargetFrameworkVersion>ในแฟ้ม .csproj
  2. อัปเกรดโมโนของคุณเป็นเวอร์ชันใหม่กว่า ฉันเชื่อว่า 5.x ควรใช้งานได้ แต่เพื่อให้แน่ใจว่าคุณสามารถติดตั้ง Ubuntu 20.04 (ซึ่งในขณะที่เขียนเป็นเพียงการแสดงตัวอย่าง) ซึ่งรวมถึง Mono 6.8.0.105

0

คุณสามารถเพิ่มลงใน web.config ในโปรเจ็กต์ของคุณ

มันจะไม่ทำงานเมื่อคุณเพิ่มลงในโครงการ web.config เนื่องจากทำงานร่วมกับ MVC


0

ในกรณีของฉันฉันพบว่านักเก็ตที่มีปัญหาคือ System.Memory ในเวอร์ชัน 4.5.1 เมื่ออัปเดตเป็นเวอร์ชัน 4.5.3 ใช้งานได้ !!


0

ผู้ที่ไม่มีไฟล์ web.config ประเภทเอาต์พุตนอกเหนือจากเว็บแอปพลิเคชัน อัปเดตไฟล์โครงการ (.csproj) พร้อมให้รหัสด้านล่าง

อาจเกิดจากการเพิ่ม / ลบ. netframework ด้วยวิธีที่ไม่เหมาะสมหรืออาจผิดพลาดโดยไม่คาดคิด

  <ItemGroup>
    <Reference Include="netstandard" />
  </ItemGroup>

ประเภทเอาต์พุต

  • แอปพลิเคชันคอนโซล
  • ห้องสมุดชั้นเรียน

-5

ปัญหานี้ขึ้นอยู่กับ Visual Studio และ Windows เวอร์ชันที่ติดตั้งไว้คุณสามารถทำตามขั้นตอนต่อไปนี้: -

  1. ไปที่หน้าต่างคำสั่ง
  2. ปรับลด PCL ของคุณโดยใช้คำสั่งต่อไปนี้

    Install-Package Xamarin.Forms -Version 2.5.1.527436
  3. สร้างโครงการของคุณใหม่
  4. ตอนนี้คุณจะสามารถเห็นผลลัพธ์ที่ต้องการ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.