MissingManifestResourceException หมายถึงอะไรและจะแก้ไขได้อย่างไร


151

สถานการณ์:

  • ฉันมีห้องสมุดคลาสที่เรียกว่าRT.Serversมีทรัพยากรอยู่น้อย (เป็นประเภทbyte[]แต่ฉันไม่คิดว่ามันสำคัญ)
  • ไลบรารีคลาสเดียวกันมีวิธีการหนึ่งซึ่งส่งคืนหนึ่งในทรัพยากรเหล่านั้น
  • ฉันมีโปรแกรมอย่างง่าย (โดยมีการอ้างอิงไปยังไลบรารีนั้น) ที่เรียกว่าวิธีการเดียวเท่านั้น

ฉันได้รับMissingManifestResourceExceptionข้อความต่อไปนี้:

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

ฉันไม่เคยเล่นกับวัฒนธรรมหรือลงนามในชุดดังนั้นฉันไม่รู้ว่าเกิดอะไรขึ้นที่นี่ นอกจากนี้ยังทำงานในโครงการอื่นซึ่งใช้ไลบรารีเดียวกัน ความคิดใด ๆ


2
นี่เป็นหนึ่งในข้อยกเว้นที่ไม่มีประโยชน์ที่สุดใน. NET มันก่อให้เกิดอย่างน้อย 3 สถานการณ์ที่ไม่มีอะไรเหมือนกัน
rr-

1
ขออภัย แต่มันเป็นวิธีที่ไมโครซอฟท์: ลบทั้งหมดแล้วเพิ่มอีกครั้ง ใช้งานได้กับทรัพยากร NUGET การอ้างอิงและสตริงการเชื่อมต่อ มีจำนวนมากของเครื่องมือที่มี แต่คุณจะใช้เวลาสำหรับแฟ้มดิบในกรณีที่ไม่ปกติ ...
maxkoryukov

คำตอบ:


238

ทั้งหมดที่ฉันต้องทำเพื่อแก้ไขปัญหานี้คือการคลิกขวาที่Resources.resxแฟ้มใน Explorer โซลูชันและคลิกเรียกใช้เครื่องมือที่กำหนดเอง นี้อีกครั้งสร้างสร้างขึ้นโดยอัตโนมัติResources.Designer.csไฟล์

หากไฟล์. resx ถูกเพิ่มเข้าไปในโครงการด้วยตนเองคุณสมบัติ Custom Tool ของไฟล์จะต้องตั้งค่าเป็น "ResXFileCodeGenerator"

ปัญหาเกิดจากการที่ไม่ตรงกันของเนมสเปซซึ่งเกิดขึ้นหากคุณเปลี่ยน "ค่าเริ่มต้นเนมสเปซ" ของแอสเซมบลีในการตั้งค่าโครงการ (ฉันเปลี่ยนจาก (ก่อนหน้านี้) "Servers"เป็น (ตอนนี้) "RT.Servers")

ในรหัสที่สร้างขึ้นโดยอัตโนมัติResources.Designer.csมีรหัสต่อไปนี้:

internal static global::System.Resources.ResourceManager ResourceManager {
    get {
        if (object.ReferenceEquals(resourceMan, null)) {
            global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Servers.Resources", typeof(Resources).Assembly);
            resourceMan = temp;
        }
        return resourceMan;
    }
}

สายอักขระตัวอักษรจะต้องมีการเปลี่ยนไป"Servers.Resources" "RT.Servers.Resources"ฉันทำสิ่งนี้ด้วยตนเอง แต่การเรียกใช้เครื่องมือแบบกำหนดเองจะทำได้ดีพอ ๆ กัน


9
สิ่งนี้ช่วยฉันได้มากเวลา!
Eric

1
+1! ใน VS 2010 สตริงตัวอักษร ResourceManager ที่แสดงด้านบนจะได้รับการอัปเดตโดยอัตโนมัติเป็นค่าของ Default Namespace ในคุณสมบัติโครงการ (แท็บแอปพลิเคชัน) อย่างน้อยสำหรับ WinForms
TrueWill

2
ถ้าคุณไม่มีไฟล์ resources.resx
ashes999

@ ashes999: คุณเคยดูในโฟลเดอร์ Properties หรือไม่? นั่นคือสิ่งที่มันมักจะเป็นสำหรับโครงการ C # อย่างน้อย
RenniePet

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

37

ฉันเพิ่งเจอปัญหานี้ในวันนี้และฉันพบหน้าช่วยเหลือและสนับสนุนของ Microsoftที่แก้ปัญหาได้จริง

ฉันมีผู้ได้รับมอบหมายสองคนที่ด้านบนของไฟล์ของฉันในเนมสเปซส่วนกลางและในทันใดฉันก็เริ่มMissingManifestResourceExceptionใช้งานโปรแกรมในบรรทัดนี้:

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

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

จากนั้นฉันก็พบลิงค์ด้านบนซึ่งกล่าวว่า

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

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


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

7
ฉันได้รับข้อผิดพลาดเนื่องจากการเพิ่มคลาสเหนือคลาสของ Form ในไฟล์ Form1.cs (ตามที่กล่าวไว้ในส่วน "การแก้ปัญหา" ของลิงก์ที่คุณให้ไว้) ขอบคุณ!
Matt Smith

ปัญหาเดียวกัน; ไม่มีอะไรทำงานได้ดังนั้นฉันเพิ่งลบบรรทัด: this.Icon = ((System.Drawing.Icon) (resources.GetObject ("$ this.Icon"))); เพราะฉันไม่สนใจเกี่ยวกับไอคอนในรูปแบบที่เฉพาะ :)
แกรี่ Huckabone

นั่นคือคำตอบ ขอบคุณ.
Sertan Pekel

หากมีใครสับสนฉันมีคลาสที่เรียกว่า "StringExtensions" ก่อนบิต "Form1" ของ Form1.cs ฉันย้ายมันด้านล่าง Form1 ใน form1.cs แทนด้านบนและใช้งานได้
Ma Dude

31

ฉันพบปัญหาที่คล้ายกันและถึงแม้ว่าฉันรู้ว่ามันไม่ใช่สาเหตุของ OP แต่ฉันจะโพสต์ไว้ที่นี่เพื่อที่ว่าถ้ามีคนอื่นเจอปัญหานี้ในอนาคตจะมีคำตอบให้

หากคุณเพิ่มคลาสก่อนคลาสดีไซเนอร์คุณจะได้รับMissingManifestResourceExceptionข้อยกเว้นในขณะทำงาน (ไม่มีข้อผิดพลาดในการรวบรวมหรือคำเตือน) เพราะ

Visual Studio ต้องการให้ผู้ออกแบบใช้คลาสแรกในไฟล์

สำหรับ (เล็กน้อย) ข้อมูลเพิ่มเติมดูโพสต์นี้


12
ขอบคุณสำหรับการโพสต์ "คำตอบ" นี้ แม้จะเป็น "นอกหัวข้อ" ที่เกี่ยวข้องกับปัญหาของ OP แต่ก็เป็นความคิดที่ดีที่จะโพสต์ไว้ที่นี่ การค้นหา MissingManifestResourceException ทำให้ฉันเข้าสู่เธรดนี้และคำตอบของคุณตรงประเด็นสำหรับปัญหาของฉัน
RenniePet

16

ฉันมีปัญหาเดียวกัน แต่การใช้คำสั่งเรียกใช้เครื่องมือกำหนดเองตามที่ Timwi แนะนำไม่ได้ช่วยในกรณีของฉัน

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

ในกรณีของฉันฉันต้องเปลี่ยนคุณสมบัติ "Build Action" จาก "Resource" เป็น "Embedded Resource"

การเดาที่ดีที่สุดของฉันสำหรับเหตุผลคือฉันมี. resxในไลบรารีที่ใช้จากแอปพลิเคชันอื่น แอปพลิเคชันของฉันไม่มีไฟล์. resxของตัวเองดังนั้นจึงต้องใช้ไฟล์จากไลบรารี - ซึ่งจะใช้ได้เฉพาะเมื่อมันฝังอยู่ในไลบรารีและไม่ใช่ "สแตนด์อะโลน"


2
+1 ขอบคุณฉันตรวจสอบไฟล์ทรัพยากรอีกครั้งซึ่งอยู่ในห้องสมุดแยกต่างหากซึ่งอ้างอิงโดยแอปพลิเคชันอื่น ฉันมี Build Action ตั้งค่าเป็นเนื้อหาและหลังจากเปลี่ยนเป็น Embedded Resource แล้วทุกอย่างก็ใช้ได้ดี การกำกับดูแลที่
โง่เง่า

1
ขอบคุณ! สิ่งนี้ใช้ได้กับฉันเมื่อฉันมีไฟล์ข้อความที่มีเนื้อหาสำหรับการทดสอบหรือกฎการจับคู่ธุรกิจบางอย่าง การเปลี่ยนจากเนื้อหาเป็นทรัพยากรฝังตัวแก้ไขปัญหาได้
S. Baggy

12

เมื่อฉันทำงานในปัญหาที่คล้ายกันใน Vs 2012 ปรากฎว่าคุณสมบัติ "Custom Tool Namespace" ของไฟล์ resx นั้นผิด (ในกรณีของฉันจริง ๆ แล้วมันไม่ได้ถูกตั้งค่าดังนั้นรหัสที่สร้างขึ้นจึงถือข้อยกเว้นนี้ในขณะทำงาน) . คุณสมบัติชุดสุดท้ายของฉันสำหรับไฟล์ resx เป็นดังนี้:

  • การดำเนินการสร้าง: ทรัพยากรที่ฝังตัว
  • คัดลอกไปยังไดเรกทอรีที่ส่งออก: อย่าคัดลอก
  • เครื่องมือที่กำหนดเอง: ResXFileCodeGenerator
  • Custom Tool Namespace: My.Project.S.Proper.Namespace

3

ดูเพิ่มเติมที่: MissingManifestResourceException เมื่อเรียกใช้การทดสอบหลังการสร้างด้วย MSBuild (.mresource มีพา ธ ในรายการ)

ฉันทำซ้ำคำตอบที่นี่เพียงเพื่อความสมบูรณ์:

มันจะปรากฏเพิ่ม LogicalName ไปยังไฟล์โครงการแก้ไขมัน:

<LogicalName>$(RootNamespace).Properties.Resources.resources</LogicalName> 

นั่นคือรายการทรัพยากรฝังตัวในไฟล์โครงการมีลักษณะดังนี้:

<ItemGroup>
  <EmbeddedResource Include="Properties\Resources.resx">
    <Generator>ResXFileCodeGenerator</Generator>
    <LastGenOutput>Resources.Designer.cs</LastGenOutput>
    <LogicalName>$(RootNamespace).Properties.Resources.resources</LogicalName> 
  </EmbeddedResource>
</ItemGroup>

นี่คือรายละเอียดใน: http://blogs.msdn.com/b/msbuild/archive/2007/10/19/manifest-resource-names-changed-for-resources-files.aspx

โปรดทราบว่าเรากำลังใช้ไฟล์. resx แต่ข้อผิดพลาดยังคงเกิดขึ้น

อัปเดต: ปัญหาเกี่ยวกับทรัพยากร (รวมถึง XAML) ดูเหมือนจะเกี่ยวข้องกับเส้นทางออกและการใช้สแลชไปข้างหน้าหรือย้อนกลับตามรายละเอียดใน: เหตุใดการแก้ไขไดเรกทอรีไดเรกทอรีของโครงการที่เป็นสาเหตุ: IOException ไม่สามารถจัดการได้ ."


หลังจากผ่านไปประมาณแปดชั่วโมงในการแก้ไขข้อบกพร่องของปัญหานี้และการสืบค้นทุก ๆ อย่างละเอียดและคำตอบของ Google นี่คือคำตอบที่แก้ปัญหาของฉัน ... fwiw ปัญหาของฉันเริ่มเกิดขึ้นหลังจากการย้ายจาก. Net 3.5 ถึง 4.7.2
เนวิลล์

3

ฉันพบสาเหตุที่แตกต่างของปัญหานี้ซึ่งไม่เกี่ยวข้องกับไฟล์ resx ฉันมีห้องสมุดคลาสที่ AssemblyInfo.cs มีดังต่อไปนี้:

[assembly: ThemeInfo(
ResourceDictionaryLocation.SourceAssembly,
ResourceDictionaryLocation.SourceAssembly)]

ชุดประกอบไม่มีรหัส WPF ชุดรูปแบบหรือพจนานุกรมทรัพยากร ฉันกำจัดข้อยกเว้นโดยลบแอตทริบิวต์ ThemeInfo

ฉันไม่ได้รับข้อยกเว้นจริงเท่านั้น

ข้อยกเว้นโอกาสแรกของประเภท 'System.Resources.MissingManifestResourceException'

การดูรายละเอียดข้อยกเว้นระบบกำลังร้องขอ MyAssembly.g.resources

หวังว่านี่อาจช่วยคนอื่นได้


2
ขอบคุณสำหรับสิ่งนี้! การแก้ไขที่ฉันต้องการ! เกิดขึ้นเมื่อคุณสร้างโครงการ ViewModel เป็นห้องสมุดควบคุมโดยไม่ได้ตั้งใจ
Andrew Hanlon

ขอบคุณ. สิ่งนี้แก้ไขได้สำหรับฉัน
Jamleck

2

ไม่แน่ใจว่าจะช่วยคนได้ แต่อันนี้ใช้ได้สำหรับฉัน:

ดังนั้นปัญหาที่ฉันมีคือฉันได้รับข้อความต่อไปนี้:

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

ฉันพยายามรับทรัพยากรที่ฝังอยู่ในโครงการของฉันจากห้องสมุดคลาสอื่น

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

จากนั้นเรียกใช้และvoilàไม่มีข้อผิดพลาดอีกต่อไปสำหรับฉัน ...


2

วิธีแก้ปัญหาที่ BlaM ใช้กับฉันก็เช่นกัน

ฉันเป็นผู้ใช้ VS 2013 หลังจากผ่านการแก้ไขหลายอย่าง แต่ไม่มีโชคฉันได้ลองทำสิ่งนี้:

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

แค่นั้นแหละ! :)


ยืนยันสิ่งนี้ ฉันมีโครงการทำงาน แต่จำเป็นต้องบำรุงรักษาชุดทรัพยากรแยกต่างหากดังนั้นพยายามพลิกจาก "ทรัพยากรฝังตัว" เป็นเพียง "ทรัพยากร" และจบลงด้วยการได้รับ MissingResourceManifestException
Mosca Pt

2

ฉันมีปัญหาเดียวกัน แต่ในกรณีของฉันฉันวางคลาสใน usercontrol ซึ่งเกี่ยวข้องกับ usercontrol เช่นนี้

Public Class MyUserControlObject

end Class

Public Class MyUserCOntrol

end Class

ทางออกคือการย้ายMyUserControlObjectไปยังจุดสิ้นสุดของคลาส Usercontrol เช่นนี้

Public Class MyUserCOntrol

end Class

Public Class MyUserControlObject

end Class

ฉันหวังว่านี่จะช่วยได้


พูดคุยเกี่ยวกับคำอธิบายข้อผิดพลาดเส็งเคร็ง ... ฉันเพิ่มคลาสตัวช่วยลงในไฟล์ CS ของฟอร์มหลัก ฉันจะไม่เดาข้อความแสดงข้อผิดพลาดที่จะเชื่อมโยงกลับไปที่นี้ ขอบคุณ!
Adam Lewis

1

ฉันได้รับข้อผิดพลาด MissingManifestResourceException หลังจากฉันย้ายพอร์ตโครงการของฉันจาก VS2005 เป็น VS2010 ฉันไม่มีคลาสอื่น ๆ ที่กำหนดไว้ในไฟล์ที่มีคลาสฟอร์มของฉัน และฉันยังตั้งชื่อไฟล์ทรัพยากร resx ของฉันอย่างถูกต้อง ใช้งานไม่ได้

ดังนั้นฉันจึงลบไฟล์ resx และสร้างใหม่ ทั้งหมดนี้ดี


1

เมื่อเร็ว ๆ นี้พบปัญหาเดียวกันพยายามดิ้นรนหาเล็กน้อยพบหัวข้อนี้ แต่ไม่มีคำตอบที่ถูกต้องสำหรับฉัน

ปัญหาของผมก็คือว่าเมื่อฉันออกจากหน้าต่างหลักของโครงการ WPF ของฉัน (มันไม่ได้มีหน้าต่างหลัก) ฉันลืมที่จะเอาจากStartupUri App.xamlผมคิดว่าข้อยกเว้นนี้สามารถเกิดขึ้นได้ถ้าคุณมีความผิดพลาดในStartupUriดังนั้นในกรณีถ้าใครจะดิ้นรนกับนี้ - ตรวจสอบของคุณในStartupUriApp.xaml


1

เมื่อเร็ว ๆ นี้พบปัญหานี้ในกรณีของฉันฉันทำบางสิ่ง:

  1. ตรวจสอบให้แน่ใจว่าเนมสเปซสอดคล้องกันในไฟล์ Designer.cs ของไฟล์ resx

  2. ตรวจสอบให้แน่ใจว่าเนมสเปซเริ่มต้นของแอสเซมบลี (คลิกขวาที่โครงการและเลือกคุณสมบัติ) ได้รับการตั้งค่าเหมือนกับเนมสเปซที่มีไฟล์ทรัพยากรอยู่

เมื่อฉันทำขั้นตอนที่ 2 ข้อยกเว้นก็หายไป


1

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


1

นอกจากนี้ข้อผิดพลาดเดียวกันอาจเกิดขึ้นเมื่อคุณใส่คลาสใหม่ลงในซอร์สโค้ดของนักออกแบบที่สร้างคลาสของฟอร์ม

คลาสใหม่นี้อาจถูกลบและวางในไฟล์ cs อื่น

(อย่างน้อยในกรณีของฉันนี่เป็นปัญหา ... )


0

เพราะฉันรวบรวมเว็บแอปพลิเคชันของฉันล่วงหน้า (โดยใช้คุณสมบัติเผยแพร่ VS2012) ฉันได้รับข้อผิดพลาดด้านบน ฉันลองใช้คำแนะนำทั้งหมด แต่การเปลี่ยน 'Build Action' เป็น 'เนื้อหา' ได้ทำการหลอกลวง!


0

ในกรณีของฉันฉันมีเว็บ API พร้อมทรัพยากรและฉันสร้างแพ็คเกจ nuget จากนั้น เมื่อฉันใช้ nuget นี้ในโครงการอื่นฉันรู้ว่าเมื่อฉันขอ API ด้วยทรัพยากรฉันได้รับMissingManifestResourceExceptionหลังจากการค้นหาอีกเล็กน้อยฉันเรียนรู้ nuget packager ที่ไม่ได้บรรจุทรัพยากรโดยอัตโนมัติ หากคุณต้องการใช้ไฟล์ทรัพยากรคุณต้องทำด้วยตนเอง ดังนั้นคุณต้องเพิ่มบรรทัดด้านล่างลงในไฟล์ .uspec ของคุณ: (ไปที่https://github.com/NuGet/Home/issues/1482 )

<package> 
    <metadata>
    </metadata>
    <files>
        <file src="bin\Debug\en\MyAssembly.resource.dll" target="lib\net40\en\MyAssembly.resource.dll" />
        <file src="bin\Debug\es\MyAssembly.resource.dll" target="lib\net40\es\MyAssembly.resource.dll" />
    </files>
</package>

แต่ก่อนที่จะเพิ่มไฟล์คุณต้องแน่ใจว่า. net รุ่นใดที่คุณใช้อยู่


0

ฉันมีโครงการ F # ที่เพิ่งสร้างใหม่ วิธีแก้ไขคือยกเลิกการเลือก "ใช้ชื่อทรัพยากรมาตรฐาน" ในคุณสมบัติโครงการ -> แอปพลิเคชัน -> ทรัพยากร / ระบุวิธีจัดการทรัพยากรแอปพลิเคชัน หากคุณไม่เห็นช่องทำเครื่องหมายให้อัปเดต Visual Studio ของคุณ! ฉันติดตั้ง 15.6.7 แล้ว ใน 15.3.2 ช่องทำเครื่องหมายนี้ไม่ได้มี


0

เพียงพูดถึง ถ้าคุณใช้ค่าคงที่หรือตัวอักษรให้แน่ใจว่ามันหมายถึงทรัพยากรของรูปแบบProjectName.Resourcesและไม่ Resources.resxcpntain

มันสามารถช่วยคุณได้หนึ่งหรือสองชั่วโมง


0

ฉันพบปัญหานี้กับโครงการ C ++ ที่ได้รับการจัดการตาม WinForms หลังจากเปลี่ยนชื่อโกลบอลสเปซ (ไม่ใช่ด้วยตนเอง แต่ด้วยเครื่องมือเปลี่ยนชื่อของ VS2017)

การแก้ปัญหานั้นง่าย แต่ไม่ได้กล่าวถึงที่อื่น

คุณต้องเปลี่ยนRootNamespaceรายการใน vcxproj-file เพื่อให้ตรงกับ namespace C ++


0

ในกรณีของฉันมันเป็นตัวพิมพ์ผิดใน Xaml ของหน้าต่างที่เปิดจากแบบฟอร์ม Winforms:

ไม่ถูกต้อง: <Image Source="/Resources/WorkGreen.gif"/>

ถูกต้อง: <Image Source="../Resources/WorkGreen.gif"/> อาจช่วยใครซักคน


-3

จากหน้าสนับสนุนของ Microsoft :

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

เมื่อต้องการแก้ไขปัญหานี้ระบุชื่อไฟล์ของไฟล์. resources เมื่อคุณเรียกใช้ Resgen.exe ขณะที่คุณระบุชื่อไฟล์ของไฟล์. resources ตรวจสอบให้แน่ใจว่าชื่อไฟล์เริ่มต้นด้วยชื่อเนมสเปซของแอปพลิเคชันของคุณ ตัวอย่างเช่นเรียกใช้คำสั่งต่อไปนี้ที่พรอมต์คำสั่ง Microsoft Visual Studio .NET เพื่อสร้างไฟล์. resources ที่มีชื่อเนมสเปซของแอปพลิเคชันของคุณที่จุดเริ่มต้นของชื่อไฟล์:

Resgen strings.CultureIdentifier.resx 
MyApp.strings.CultureIdentifier.resources

1
ขอบคุณสำหรับการตอบกลับของคุณ แต่ฉันไม่รู้ว่า ResGen.exe คืออะไรฉันไม่เคยใช้และบอกตรงๆว่าฉันไม่ต้องการใช้เพราะฉันไม่ได้พยายามใช้อะไรที่แฟนซี แน่นอนต้องมีวิธีการแก้ไขจาก Visual Studio หรือไม่ ตัวอย่างเช่นเนื่องจากคุณพูดว่าทรัพยากรเป็น "ภาษาท้องถิ่น" ฉันจะประกาศทรัพยากรว่าเป็นภาษาท้องถิ่นได้อย่างไร ขอบคุณอีกครั้ง.
Timwi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.