ไม่พบทรัพยากรใด ๆ ที่เหมาะสมสำหรับวัฒนธรรมที่ระบุหรือวัฒนธรรมที่เป็นกลาง


194

ฉันมีโครงการเว็บ ASP.NET สองโครงการ (ProjectA และ ProjectB) เมื่อคลาสใน ProjectA กำลังสร้างคลาสของ ProjectB ซึ่งใช้ไฟล์ทรัพยากร Blah.resx ฉันได้รับข้อผิดพลาดนี้:

มีข้อยกเว้นประเภท 'System.Resources.MissingManifestResourceException' เกิดขึ้นใน mscorlib.dll แต่ไม่ได้รับการจัดการในรหัสผู้ใช้

ไม่พบทรัพยากรใด ๆ ที่เหมาะสมสำหรับวัฒนธรรมที่ระบุหรือวัฒนธรรมที่เป็นกลาง ตรวจสอบให้แน่ใจว่า "Resources.Blah.resources" ถูกฝังอย่างถูกต้องหรือเชื่อมโยงไปยังแอสเซมบลี "App_GlobalResources.sn_flri6" ณ เวลารวบรวมหรือว่าแอสเซมบลีดาวเทียมทั้งหมดที่จำเป็นต้องโหลดและลงนามอย่างสมบูรณ์

อะไรเป็นสาเหตุของเรื่องนี้

มีบทความในเว็บไซต์ของ Microsoft เกี่ยวกับhttp://support.microsoft.com/kb/318603 ซึ่งแนะนำ:

เมื่อต้องการแก้ไขปัญหานี้ให้ย้ายคำจำกัดความของคลาสอื่นทั้งหมดเพื่อให้ปรากฏตามคำจำกัดความของคลาสของฟอร์ม

นี่เป็นวิธีการแก้ปัญหาสำหรับโครงการ Windows Forms ฉันไม่แน่ใจว่าจะใช้กับโครงการเว็บหรือไม่


โครงการประเภทใดบ้าง 2 เว็บไซต์? 1 เว็บไซต์ห้องสมุด 1 ชั้น?
แดงก่ำ

โครงการเว็บไซต์ ASP.NET สองโครงการ
dev.e.loper

11
+1 สำหรับส่วนTo resolve this problem, move all of the other class definitions so that they appear after the form's class definition.นี้แก้ไขปัญหาของฉันได้
OmarOthman

1
+1 นิยามคำถามของคุณด้วยลิงก์ Windows โครงการช่วยเหลือแบบฟอร์ม Microsoft เพียงแก้ไขปัญหาของฉัน
DarrenMB

คำตอบนี้แก้ปัญหาให้ฉันได้! GetGlobalResourceObject
DanielV

คำตอบ:


257

ฉันเพิ่งพบข้อยกเว้นเดียวกันนี้ในโครงการ WPF ปัญหาเกิดขึ้นภายในแอสเซมบลีที่เราเพิ่งย้ายไปยังเนมสเปซอื่น ( ProblemAssembly.SupportไปProblemAssembly.Controls) ข้อยกเว้นเกิดขึ้นเมื่อพยายามเข้าถึงทรัพยากรจากไฟล์ทรัพยากรที่สองที่มีอยู่ในแอสเซมบลี

ปรากฎว่าไฟล์ทรัพยากรเพิ่มเติมไม่ได้ย้ายการอ้างอิงจากชื่อเนมสเปซเก่าไปยังชื่อเนมสเปซใหม่อย่างเหมาะสม

ใน designer.cs สำหรับไฟล์ทรัพยากรมีคุณสมบัติสแตติกเพื่อรับ ResourceManager ภายใน getter นั้นสตริงนั้นยังคงอ้างถึงเนมสเปซเก่า เมื่อแก้ไขให้เป็นเนมสเปซใหม่ปัญหาได้รับการแก้ไขแล้ว:

global::System.Resources.ResourceManager temp = 
     new global::System.Resources.ResourceManager(
          "ProblemAssembly.Support.Properties.Stuff", typeof(Stuff).Assembly);

น่าจะเป็น:

global::System.Resources.ResourceManager temp = 
     new global::System.Resources.ResourceManager(
          "ProblemAssembly.Controls.Properties.Stuff", typeof(Stuff).Assembly);

หวังว่านี่จะช่วยให้คนต่อไป


5
+1 คำอธิบายที่ดีว่าจะหาสาเหตุได้ที่ไหนในไฟล์ผู้ออกแบบ พบและคงขอบคุณปัญหาเดียวกันกับคุณ :)
Gone Coding

1
ลิงค์: เอกสาร MSDN สำหรับคลาสResourceManager
Boinst

3
ขอบคุณมันช่วยฉันแก้ปัญหานี้ ท่านสามารถลบไฟล์ผู้ออกแบบจากนั้นเปิดแล้วบันทึกไฟล์ resx เพื่อสร้างไฟล์ตัวออกแบบใหม่ได้อย่างถูกต้อง
Serge

1
ฉันมีปัญหาเดียวกันและนี่คือคำตอบที่ฉันต้องการ น่าเสียดายที่มันไม่ปรากฏในเวลารวบรวม :-( ขอบคุณ
noob

2
ขอบคุณมีปัญหานี้เช่นกัน แต่เป็นเพราะฉันเพิ่มโฟลเดอร์ย่อยที่มีชื่อเดียวกับส่วนสุดท้ายของเนมสเปซของโครงการดังนั้นมันจึงมองหา project.folder.folder.class แทน project.folder.class ฉันย้ายมันไปที่รูทและตอนนี้มันเข้าแถวและใช้งานได้!
SelAromDotNet

115

ฉันแก้ไขปัญหาเช่นนี้:

  1. คลิกขวาที่ ResourceFile ของคุณ
  2. เปลี่ยนคุณสมบัติ "Build Action" คอมไพล์เป็น "Embedded Resource"
  3. จากนั้นสร้างและเรียกใช้

มันทำงานได้อย่างสมบูรณ์


@sibi Elango ฉันคลิกขวาที่ ResourceFile ของฉัน แต่ไม่พบส่วน Build Action
S5498658

1
@ S5498658 หากคุณไม่เห็นสิ่งนี้ในเมนูบริบท (คลิกขวา) ให้ดูที่แผงคุณสมบัติ (มักจะอยู่ด้านล่างของตัวสำรวจโซลูชัน)
กำหนด

มันสร้างการกระทำ แต่ก็ยังไม่ทำงาน นอกจากนี้ฉันตรวจสอบไดเรกทอรีและไดเรกทอรีเดียวกันภายใต้คุณสมบัติ
Albatross

1
มันจะดีถ้าคำตอบอธิบายว่าทำไมการแก้ปัญหานี้ทำงาน
Luis Teijon

นี่มันยอดเยี่ยมมาก
code4j

22

เมื่อฉันลองแชร์ไฟล์ resource.resx จากโครงการ C # หนึ่งกับอีกโครงการ C # ฉันพบปัญหานี้ คำแนะนำในการย้ายคลาสของฟอร์มไปยังจุดเริ่มต้นของไฟล์นั้นไม่เหมาะสม นี่คือวิธีที่ฉันแก้ไขมัน คุณใช้ลิงก์จากโปรเจ็กต์ที่สองเป็นครั้งแรกจากนั้นเปิดใช้งานการสร้างresource.designer.csไฟล์ใหม่

  1. ลบProperties/Resources.resxไฟล์ของโครงการที่สอง
  2. เพิ่มProperties/Resources.resxไฟล์โครงการแรกเป็นลิงก์ไปยังโฟลเดอร์คุณสมบัติในโครงการที่สอง อย่าเพิ่มลงในระดับรากของโครงการ
  3. อย่าเพิ่มโครงการแรกProperties/Resources.designer.cs!
  4. ในคุณสมบัติของโครงการที่สองResources.resxเพิ่มResXFileCodeGeneratorเป็น CustomTool
  5. คลิกขวาที่Resources.resxและเลือก "Run Custom Tool" สิ่งนี้จะสร้างไฟล์ designer.cs ใหม่

หมายเหตุ: ฉันจะหลีกเลี่ยงการแก้ไขไฟล์ resource.designer.cs เนื่องจากมันถูกสร้างอัตโนมัติ


12

ในกรณีของฉันชุดของการแทนที่ข้อความทั่วโลกที่คิดว่าไม่ดีมีการเปลี่ยนแปลงบรรทัดนี้โดยไม่ตั้งใจในไฟล์ cs ผู้ออกแบบทรัพยากร

ป้อนคำอธิบายรูปภาพที่นี่

เนื่องจากเนมสเปซในอาร์กิวเมนต์นั้นไม่ตรงกับเนมสเปซของคลาสอีกต่อไปแอปพลิเคชันจึงสับสนในเวลาทำงาน

ตรวจสอบว่าเนมสเปซของผู้ออกแบบตรงกับอาร์กิวเมนต์สตริงในบรรทัดนั้น


1
เป็นปัญหาของฉันอย่างแน่นอน ขอบคุณสำหรับการแบ่งปัน!
AcidJunkie

เหมือนกันที่นี่: มันเกิดขึ้นหลังจากการย้ายจาก PCL เป็น. NET มาตรฐานเมื่อฉันสร้างโครงการชั่วคราวและเนมสเปซซึ่งฉันคัดลอกไฟล์พกพาทั้งหมดลบโครงการพกพาและเปลี่ยนเนมสเปซกลับเป็นต้นฉบับบรรทัดนี้ยังคงอยู่ชั่วคราว namespace จากกระบวนการย้ายข้อมูล
Zerga

11

มันเกิดขึ้นเพราะ*.resхถูกแยกออกจากการโยกย้าย

  • คลิกขวาที่ ResourceFile ของคุณ
  • คลิกที่รายการเมนู "รวมอยู่ในโครงการ"

2
สิ่งนี้แก้ไขได้สำหรับฉัน โดยปกติแล้วไฟล์ resx จะถูกเพิ่มโดยอัตโนมัติ ฉันได้รวมที่ฉันต้องเปลี่ยนไฟล์โครงการและเพิ่มการโยกย้ายด้วยตนเองดังนั้นอาจจะมีบางอย่างที่เกี่ยวข้องกับมัน
smarty

ทำงานให้ฉัน ฉันต้องเพิ่มไฟล์ * .resx ทั้งหมดของการย้ายข้อมูลแต่ละครั้ง ขอบคุณ
m.rufca

7

ฉันพบว่าการลบไฟล์ designer.cs ไม่รวมไฟล์ resx จากโครงการแล้วรวมถึงมันมักจะแก้ไขปัญหาประเภทนี้ดังต่อไปนี้ตาม refactoring namespace (ตามคำตอบของ CFinck)


นี่คือสิ่งที่ทำเพื่อฉัน! (ลองคำตอบของ CFinck เนื่องจากดูเหมือนว่าเกี่ยวข้อง แต่ไม่ได้ผล)
ชนะเมื่อ

หนึ่งในวิธีแก้ปัญหาที่เร็วที่สุด
Lorenz Lo Sauer

6

ดูเหมือนว่าไม่มีใครพูดถึงวิธีนี้ ชัดเจนจริงๆ - แต่สะดุดฉันไว้ครู่หนึ่ง ...

ตัวดัดแปลงการเข้าถึงเริ่มต้นสำหรับไฟล์ทรัพยากรใหม่คือInternal(หรือFriendใน VB.Net) ตรวจสอบให้แน่ใจว่าคุณเปลี่ยนสิ่งนี้เป็นPublic

(ในตัวออกแบบ resx จะมีดรอปดาวน์ที่ด้านบนสำหรับตัวดัดแปลงการเข้าถึง)


4

Sibi Elangos ตอบเพียงอย่างเดียวไม่เพียงพอสำหรับฉันดังนั้นฉันต้องทำ

  • คลิกขวาที่ ResourceFile ของคุณ
  • เปลี่ยนคุณสมบัติ "Build Action"
  • คอมไพล์เป็น "ทรัพยากรฝังตัว"
  • สร้างและปรับใช้

สิ่งนี้จะสร้าง App_GlobalResources ใน/binโฟลเดอร์ของคุณตอนนี้คัดลอกโฟลเดอร์นั้นไปยังรูทของเว็บแอปพลิเคชัน


4

ในกรณีของฉันปัญหาที่เกิดจากการกำหนดคลาสผิดวิธี:

namespace MyBuggyWorld
{
    public class BackendObject //This hack broke the VS 2017 winform designer and resources linker!
    {
        public TcpClient ActiveClient { get; set; }
        public BackgroundWorker ActiveWorker { get; set; }
    }
    public partial class FormMain : Form
    {
    }
}

หลังจากการจัดสรรใหม่BackendObjectไปยังจุดสิ้นสุด (ดีกว่าที่จะแยกไฟล์) การทำโครงการ clean + rebuild ช่วยแก้ปัญหา


1
ว้าวฉันไม่ทราบว่าการมีคลาสที่ผิดเมื่อเริ่มต้นไฟล์จะทำให้สิ่งต่าง ๆ แย่มาก
BrainStorm.exe

4

ฉันแก้ไขปัญหานี้ได้โดยไปที่โครงการที่บันทึกไฟล์ทรัพยากรของฉันเลื่อนลงไปที่ ItemGroup และเพิ่มชื่อโลจิคัลที่สอดคล้องกับพา ธ ที่คอมไพเลอร์คาดหวัง

EmbeddedResource ของฉันดูเหมือนว่า:

   <ItemGroup>
    <EmbeddedResource Update="Properties\TextResources.resx">
      <Generator>PublicResXFileCodeGenerator</Generator>
      <LastGenOutput>TextResources.Designer.cs</LastGenOutput>
    </EmbeddedResource>
  </ItemGroup>

ตอนนี้ดูเหมือนว่านี้

  <ItemGroup>
    <EmbeddedResource Update="Properties\TextResources.resx">
      <Generator>PublicResXFileCodeGenerator</Generator>
      <LastGenOutput>TextResources.Designer.cs</LastGenOutput>
      <LogicalName>MyProject.Properties.Resources.resources</LogicalName>
    </EmbeddedResource>
  </ItemGroup>

3

เท่าที่กรณีนี้เกี่ยวข้องตรวจสอบว่าแอสเซมบลีที่ประกอบด้วยทรัพยากรมี namespace เริ่มต้นตั้งค่าเป็นข้อความเดียวกัน (โครงการ -> คุณสมบัติ -> เนมสเปซเริ่มต้นใน VS) ตรวจสอบเช่นกันว่าไฟล์ resx มี BuildAction คุณสมบัติเป็น "ฝังตัว ทรัพยากร "เพลิดเพลินกับ ... ;)


1
สวัสดีคุณหมายถึงว่าข้อความเนมสเปซเริ่มต้น (xxx) ควรเป็นแบบเดียวกับในรหัส: Assembly localisationAssembly = Assembly.Load("xxx"); ResourceManager resourceManager = new ResourceManager("xxx", localisationAssembly);
DanielV

2

วิธีหนึ่งคือการใส่คลาส / ทรัพยากรที่ใช้ร่วมกันในโครงการห้องสมุดคลาสแยกต่างหากและอ้างอิงพวกเขาในเว็บไซต์ทั้งสอง


2
แน่นอนว่านี่เป็นปัญหาเดียวกันแล้วใช่ไหม?
Brett Rigby

2

ขอบคุณ @CFinck! เพียงเพิ่มเคล็ดลับให้กับผู้อื่น: ฉันเปลี่ยนบรรทัด ResourceManager ด้วยสิ่งนี้:

New Global.System.Resources.ResourceManager(Reflection.Assembly.GetCallingAssembly.GetName.Name & ".CommonNameOf.Resources", Reflection.Assembly.GetCallingAssembly())

ฉันอยู่ใน vb.net แต่ฉันคิดว่าใน C # ความแตกต่างเพียงอย่างเดียวคือ + แทนที่จะเป็น & เพื่อเชื่อมสตริง

วิธีนี้ฉันสามารถใช้ไฟล์แอสเซมบลีที่เชื่อมโยงเดียวกันในโครงการที่คล้ายกันสองโครงการที่ใช้ทรัพยากรร่วมกัน


1

ข้อผิดพลาดนี้เกิดจาก Dotfuscation เนื่องจากไฟล์ออกแบบ resx อาศัยการสะท้อนกลับ ถ้าคุณใช้ Dotfuscator มันจะทำให้ไฟล์ resx ของคุณพัง คุณต้องเพิ่มพวกเขาเป็นข้อยกเว้นจากกระบวนการทำให้งงงวย


1

เมื่อเราใช้งาน

HttpContext.GetGlobalResourceObject()

มันจะสร้างข้อผิดพลาดนั้นเว้นแต่ว่าเราจะห่อหุ้มการเรียกนั้นไว้ในคำสั่ง try / catch


1

ฉันมีแอปพลิเคชัน WinForms ที่มีโครงการเดียวในโซลูชัน
การกำหนดเป้าหมาย.NET Framework 4.0
โดยใช้SharpDevelop 4.3เป็น IDE ของฉัน

ฟังดูงี่เง่า แต่ฉันเกิดมีLogical Nameชุดคุณสมบัติเป็นไฟล์"Resources"ของฉัน "Resources.resx"เมื่อฉันล้างทรัพย์สินนั้นทุกอย่างทำงานได้ดี

โดยปกติเมื่อคุณเพิ่มไฟล์แบบสุ่มตามEmbeddedResourceปกติคุณต้องการตั้งค่าเป็นLogical Nameบางสิ่งบางอย่างที่เหมาะสมด้วยเหตุผลบางอย่างฉันทำแบบเดียวกันกับResources.resxไฟล์และทำให้ไฟล์ทั้งหมดผิดพลาด ...

หวังว่านี่จะช่วยใครซักคน


ฉันดูเหมือนจะมีสิ่งนี้เช่นกัน ความขัดแย้งในการตั้งชื่อฉันเดาได้ดี!
เทรนต์

1

สำหรับฉันปัญหาคือการคัดลอกไฟล์. resx และไฟล์. cs ที่เกี่ยวข้องจากโครงการหนึ่งไปอีกโครงการหนึ่ง โครงการทั้งสองมีเนมสเปซเดียวกันดังนั้นจึงไม่มีปัญหา

ในที่สุดก็แก้ไขได้เมื่อฉันสังเกตเห็นใน Solution Explorer ว่าในโครงการเดิมไฟล์. resx ขึ้นอยู่กับไฟล์. cs:

MyResource.cs
|_ MyResource.resx

ขณะที่อยู่ในโครงการที่คัดลอกไฟล์. cs จะขึ้นอยู่กับไฟล์. resx:

MyResource.resx
|_ MyResource.cs

ปรากฎว่าในโครงการที่สองอย่างใดไฟล์. resx ได้รับการตั้งค่าให้สร้างไฟล์. cs โดยอัตโนมัติ ไฟล์. cs ที่สร้างขึ้นอัตโนมัติถูกเขียนทับไฟล์. cs ที่คัดลอกมาจากโครงการต้นฉบับ

เพื่อแก้ไขปัญหาให้แก้ไขคุณสมบัติของไฟล์. resx แต่ละไฟล์ในโครงการที่คัดลอก เครื่องมือที่กำหนดเองคุณสมบัติจะถูกตั้งค่าบางอย่างเช่นResXFileCodeGenerator ล้างคุณสมบัติCustom Toolของไฟล์. resx คุณจะต้องคัดลอกไฟล์. cs จากโปรเจ็กต์ดั้งเดิมเนื่องจากจะถูกเขียนทับโดยไฟล์ที่สร้างขึ้นโดยอัตโนมัติ


1

ในกรณีของฉันฉันได้วางคลาสใหม่บนฟอร์ม Windows ภายในไฟล์เดียวกัน

การย้ายคลาสที่เพิ่มใหม่ออกจากไฟล์นั้นช่วยแก้ไขปัญหาได้

ดูที่นี่: http://i.stack.imgur.com/wVu6c.png


1
ยินดีต้อนรับสู่ Stackoverflow! หากคุณมีรหัสที่จะแบ่งปันกับเราโปรดอย่าโพสต์เป็นภาพ คุณสามารถเพิ่มไปยังโพสต์และรูปแบบที่เป็นรหัส
FelixSFD

ขอบคุณ @FelixSFD สำหรับคำแนะนำ
Petre

1

ปัญหานี้อาจเกิดจากเนมสเปซที่ไม่ตรงกัน ข้อที่สองจากคำตอบยอดนิยม (ของ Sibi Elango) บอกว่าให้คลิกขวาที่ไฟล์ resx และเปลี่ยนตัวเลือก Build เป็น EmbeddedResource แต่ฉันทำไปแล้วและยังมีข้อผิดพลาดอยู่ คำตอบด้านบน (CFinck's) บันทึกวิธีการแก้ไขผ่านทางไฟล์แก้ไขด้วยตนเอง แต่ฉันมีปัญหานี้ใน MonoDevelop และต้องตั้งค่า namespace เริ่มต้นให้เหมือนกับไฟล์ cs ที่เรียกใช้ทรัพยากร (ไฟล์ที่ มีรหัสเช่นรหัสด้านล่าง) ...

this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));

หลังจากตั้งค่าเนมสเปซเริ่มต้นผ่าน GUI บรรทัดด้านบนจะไม่ทำให้เกิดข้อยกเว้นอีกต่อไป


1

อีกกรณีหนึ่ง ฉันคัดลอกโซลูชันด้วยสองโครงการและเปลี่ยนชื่อบางส่วนใน Windows explorer (ชื่อโฟลเดอร์. sln และ. csproj ชื่อไฟล์) และบางส่วนด้วยการดำเนินการค้นหาและแทนที่ขนาดใหญ่ใน Visual Studio (เนมสเปซ ฯลฯ ) อย่างไรก็ตามข้อยกเว้นที่ระบุโดย OP ยังคงเกิดขึ้น ฉันพบว่าชื่อAssembly และ Namespaceยังคงเก่า

แม้ว่าโครงการและทุกสิ่งทุกอย่างที่ถูกเสนอชื่อแล้วOfficeStyleAssembly nameและDefault namespaceยังคงชื่อLinckus

สถานการณ์เก่า

หลังจากการแก้ไขนี้ทุกอย่างทำงานได้ดีอีกครั้งให้รวบรวมและรัน :)

สถานการณ์ใหม่


0

ในกรณีของฉันเพิ่มรหัสบรรทัดเหล่านี้เพื่อWeb.configช่วยมาก:

<system.web>
     ...
    <globalization uiCulture="cs" culture="cs-CZ" />
     ...
<system.web>

ร่วมกับการกระทำรูปร่าง: และเครื่องมือที่กำหนดเอง:Embedded ResourcePublicResXFileCodeGenerator


0

คลิกสองครั้งที่คุณสมบัติ ในส่วนแอปพลิเคชันตรวจสอบชื่อชุดประกอบและเนมสเปซเริ่มต้นเหมือนกัน


0

ฉันกำลังเผชิญกับปัญหาเดียวกันพยายามแก้ปัญหาทั้งหมดที่กล่าวถึงในคำตอบ แต่ดูเหมือนจะไม่มีใครทำงาน ปรากฎว่าในช่วงเช็คอินของรหัสเพื่อ TFS TFS ไม่ได้ทำการตรวจสอบไฟล์ Resx ที่ถูกตรวจสอบในไฟล์ผู้ออกแบบเท่านั้น ดังนั้นนักพัฒนาซอฟต์แวร์รายอื่นทั้งหมดจึงประสบปัญหานี้ในขณะที่ทำงานบนเครื่องของพวกเขา การตรวจสอบไฟล์ resx ด้วยตนเองเป็นการหลอกลวง


คุณหมายถึงอะไรโดย "เช็คอิน"?
Fandango68

ผลักไฟล์ไปยัง TFS
Kayani

0

สิ่งนี้สามารถเกิดขึ้นได้เมื่อวางคลาสเหนือคลาส winform หลัก (Form1 เป็นต้น) คุณสามารถเห็นสิ่งนี้เมื่อคุณดูการออกแบบเนื่องจากไม่สามารถแสดงผลได้


0

อีกสาเหตุหนึ่ง: ถ้าเนมสเปซของคุณมียัติภังค์ ("-") ก็จะสร้างและเรียกใช้อย่างถูกต้อง แต่ทรัพยากรจะไม่สามารถเข้าถึงได้ เนมสเปซ (ตัวระบุ) ไม่ควรมียัติภังค์ แต่สิ่งนี้ดูเหมือนจะไม่ถูกบังคับใช้ที่ใดก็ได้ยกเว้นในการโหลดทรัพยากร สิ่งนี้ทำให้ฉันร้อนเป็นสองเท่าในรอบทศวรรษ


0

สิ่งที่ต้องตรวจสอบอีกอย่างคือถ้าคุณกำหนด LogicalName หรือ ManifestResourceName ไว้ใน EmbeddedResource ตรวจสอบให้แน่ใจว่ามีการกำหนดอย่างเหมาะสมหากไฟล์โครงการของคุณใช้เพราะอาจทำให้ทรัพยากรอยู่ภายใต้ชื่อที่คุณไม่ต้องการ


0

ฉันประสบปัญหานี้ในการเรียกใช้คำสั่งการย้ายข้อมูล Update-Databaseในคอนโซล Package Manager

คำตอบที่ยอมรับไม่ได้แก้ปัญหาของฉัน

ฉันต้องเปลี่ยน Build Action จากCompileเป็นEmbedded Resourceและมันใช้งานได้สำหรับฉัน

คุณสามารถทำได้โดยใช้ขั้นตอนด้านล่าง:

  1. คลิกขวาที่การโยกย้าย
  2. เปลี่ยนคุณสมบัติ "Build Action" "Compile" เป็น "Embedded Resource"
  3. เรียกใช้คำสั่งปรับปรุงฐานข้อมูล

0

สำหรับผู้ใช้ที่เผชิญกับปัญหานี้ใน. NET Core 3.0 อาจเกี่ยวข้องกับการเปลี่ยนแปลงที่เกิดขึ้นใน. NET Core 3.0 เพื่อแก้ไขโดยตั้งค่าEmbeddedResourceUseDependentUponConventionเป็นเท็จในโครงการ csproj ของคุณ:

<PropertyGroup>
  <EmbeddedResourceUseDependentUponConvention>false</EmbeddedResourceUseDependentUponConvention>
</PropertyGroup>


-1

เพียงเพราะคุณกำลังอ้างอิง DLL ของโครงการ B ไม่ได้หมายความว่าตัวจัดการทรัพยากรของโครงการ A นั้นรับรู้ไดเรกทอรี App_GlobalResources ของโครงการ B

คุณใช้โครงการเว็บไซต์หรือโครงการเว็บแอปพลิเคชันหรือไม่ ในระยะหลัง Visual Studio ควรอนุญาตให้คุณเชื่อมโยงไฟล์ซอร์สโค้ด (ไม่แน่ใจเกี่ยวกับไฟล์เดิมฉันไม่เคยใช้ไฟล์เหล่านั้น) นี้เป็นเพียงเล็กน้อยรู้ แต่คุณสมบัติที่มีประโยชน์ซึ่งอธิบายไว้ที่นี่ ด้วยวิธีนี้คุณสามารถเชื่อมโยงไฟล์ทรัพยากรโครงการ B กับโครงการ A

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