VSTS 2010 SGEN: ข้อผิดพลาด: ไม่สามารถโหลดไฟล์หรือแอสเซมบลี (ข้อยกเว้นจาก HRESULT: 0x80131515)


106

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

วันนี้ฉันแปลง webapp เป็น vs2010 และเมื่อฉันรวบรวมใน Release มันให้ฉัน:

SGEN: ข้อผิดพลาด: ไม่สามารถโหลดไฟล์หรือแอสเซมบลี 'file: /// L: \ Api \ Release API_20100521.1 \ Release \ CS.API.Exceptions.dll' หรือการอ้างอิงอย่างใดอย่างหนึ่ง ไม่รองรับการทำงาน (ข้อยกเว้นจาก HRESULT: 0x80131515)

สิ่งที่แปลกคือมันใช้งานได้เมื่ออยู่ภายใต้โปรไฟล์ Debug ...

ฉันลองเพิ่มไฟล์

<runtime>
   <loadFromRemoteSources enabled="true" />
</runtime>

ลงใน app.config และยังไม่มีโชค (ดูhttp://social.msdn.microsoft.com/Forums/en/msbuild/thread/d12f6301-85bf-4b9e-8e34-a06398a60df0และhttp://msdn.microsoft.com/ en-us / library / dd409252 (VS.100) .aspx )

ฉันค่อนข้างแน่ใจว่าปัญหานี้มาจาก Visual Studio หรือ msbuild เนื่องจากรหัสของเราจะไม่ทำงานจากการแชร์เครือข่ายเมื่ออยู่ใน prod เนื่องจาก dll ที่อ้างอิงทั้งหมดจะถูกคัดลอกไปยังโฟลเดอร์ bin

หากใครมีวิธีแก้ไข (หรือเพียงแค่แนวคิดสำหรับเส้นทางการค้นหา) โปรดแจ้งให้เราทราบ!

แก้ไข: ปรากฎว่ามันทำงานในโหมดดีบักเนื่องจากการสร้างชุดประกอบการทำให้เป็นอนุกรมถูกปิดอยู่ ตามชื่อเรื่องมันเป็นปัญหา SGEN จริงๆเนื่องจากเป็นยูทิลิตี้ตัวนี้ที่บอกว่าเส้นทางนั้นไม่น่าเชื่อถือ ...

คำตอบ:


213

ฉันสามารถแก้ไขข้อผิดพลาดนี้ได้โดยค้นหาแอสเซมบลี DLL ใน Windows Explorer คลิกขวาเลือก Properties จากนั้นกดปุ่ม "unblock" DLL มีสตรีมที่ทำเครื่องหมายว่าเป็นไฟล์ภายนอกและเมื่อคลิกเลิกบล็อกคุณจะลบการกำหนดนั้นออก


ทำงานได้ ... มีเพียงนักพัฒนาเท่านั้นที่มีปัญหานี้ .. จาก TFS ... แปลก
spaghetticowboy

เหตุผลที่มันถูกล็อกคือซอร์สโค้ดของฉันอยู่บนการแชร์ ย้ายรหัสไปยังดิสก์ในเครื่อง - ทุกอย่างเรียบร้อยดี (สิทธิ์. NET4 SGEN สำหรับปัญหาการแชร์)
thedrs

31
ขอให้พระเจ้าคุ้มครอง. อย่างจริงจัง.
FAtBalloon

โปรดทราบว่า บริษัท ส่วนใหญ่ไม่อนุญาตให้มีการเข้าถึงของผู้ดูแลระบบในพื้นที่หรือปิดการเข้าถึงปุ่ม "เลิกบล็อก" อย่างชัดแจ้งสำหรับผู้ใช้ทั่วไปรวมถึงนักพัฒนา
kevinarpe

2
ฉันมีปัญหากับ DLL ที่คัดลอกมาจากไฟล์ zip
79IT

59

ฉันเพิ่งมีปัญหาเดียวกัน / คล้ายกันบนเซิร์ฟเวอร์สร้าง TFS ที่บิลด์อ้างอิง dll จากเครือข่ายแชร์

ปัญหาคือรูปแบบนโยบายความปลอดภัย CLR v4 มีการเปลี่ยนแปลงตั้งแต่เวอร์ชันก่อนหน้าและไม่ใช่ชุดประกอบแซนด์บ็อกซ์เหมือนก่อนหน้านี้

ในการแก้ไขปัญหาของคุณเพียงแค่ค้นหาตำแหน่งของ sgen.exe และสร้าง sgen.exe.config ในโฟลเดอร์เดียวกันโดยมีเนื้อหาต่อไปนี้:

<configuration>
  <runtime>
    <loadFromRemoteSources enabled="true" />
  </runtime>
</configuration>

sgen.exe มักจะอยู่ที่

"C:\Program Files\Microsoft SDKs\Windows\v[current version]\bin\NETFX 4.0 Tools"

คุณสามารถอ่านเกี่ยวกับการเปลี่ยนแปลงบางอย่างเกี่ยวกับนโยบาย CAS ใน. NET 4.0 ได้ในบล็อกโพสต์นี้: ลิงก์


1
ใช่ฉันเจอโซลูชันนี้ แต่ไม่มีประโยชน์สำหรับฉันฉันไม่ได้เปลี่ยนแปลงอะไรเลย ... เราแก้ไขได้เนื่องจากการประกอบการทำให้เป็นอนุกรมปิดอยู่
นักพัฒนาไอที

7
สำหรับข้อมูลอื่น ๆ SGEN มักจะอยู่ที่ "C: \ Program Files \ Microsoft SDKs \ Windows \ v7.0A \ bin \ NETFX 4.0 Tools"
Steve Cooper

ไอทีสำหรับนักพัฒนา: ในกรณีของฉันไม่สามารถปิดการสร้างชุดประกอบการทำให้เป็นอนุกรมได้เนื่องจากฉันต้องการ แต่การเปลี่ยนสาเหตุของชุดประกอบการทำให้เป็นอนุกรมอาจเป็นทางออกได้เช่นกัน
Martin Hyldahl

1
โปรดทราบว่าหากเป็นเครื่อง 64 บิตคุณต้องสร้างภายใต้ ... \ Bin \ NETFX 4.0 Tools \ x64 \
Vivek Ayer

1
สำหรับ VS2015 ให้ค้นหาที่: C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v10.0A \ bin \ NETFX 4.6 Tools
Farshid

23

มีปัญหาเดียวกันและการเปลี่ยนแปลงการกำหนดค่าไม่ทำงาน เฉพาะเมื่อฉันตั้งค่า Generate Serialization Assembly เป็น off ในคุณสมบัติของโปรเจ็กต์เท่านั้นที่ใช้งานได้


ทำงานให้ฉันเช่นกัน นี่เป็นคำตอบที่ถูกต้องสำหรับ OP ด้วยโดยอิงจากความคิดเห็นที่แก้ไขในคำถาม
akousmata

ทำงานให้ฉัน Tks.
Vinicius Gonçalves

1
คุณสมบัติของโปรเจ็กต์ -> สร้าง -> สร้างแอสเซมบลีการทำให้เป็นอนุกรมเป็นแบบอัตโนมัติหลังจากตั้งค่าปิดการคอมไพล์ก็เริ่มทำงานอย่างมีเสน่ห์ +1 และ thanx
Honza P.

นั่นใช้ได้ในกรณีของฉันด้วย อย่างไรก็ตามฉันสงสัยว่าการปิดใช้งานหมายความว่าอย่างไรเนื่องจากโดยค่าเริ่มต้นจะเปิดไว้สำหรับการกำหนดค่ารุ่น: ฉันต้องการให้แน่ใจว่าไม่มีผลข้างเคียงใด ๆ กับแอปพลิเคชันเมื่อฉันเผยแพร่ในสภาพแวดล้อมการผลิต
Asimov

มีเพียงโครงการเดียวเท่านั้นที่มีปัญหานี้ - เปลี่ยนจากอัตโนมัติเป็นปิด - โครงการนี้อ้างถึง SOAP WS
สุภา


3

ฉันมีปัญหาเดียวกันนี้และแก้ไขได้โดยการเพิ่ม sgen.exe.config ภายใต้เครื่องมือ C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin \ NETFX 4.0

ด้วยการกำหนดค่าที่เรียบง่ายนี้ตามที่คนอื่นพูด

<?xml version ="1.0"?>
<configuration>
  <runtime>
    <loadFromRemoteSources enabled="true" />
  </runtime>
</configuration>

2

สำหรับผู้ที่ใช้บริการสร้าง TFS เวอร์ชัน 64 บิตฉันต้องสร้างไฟล์กำหนดค่าในเส้นทางต่อไปนี้:

 C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\x64

และเนื้อหาของไฟล์:

<?xml version ="1.0"?>
<configuration>
<runtime>
    <loadFromRemoteSources enabled="true" />
</runtime>
</configuration>

1

ฉันมีปัญหาเดียวกันโหลดแอสเซมบลีใน GAC และใช้งานได้


สิ่งที่เราไม่ต้องการให้อยู่ใน GAC เราแก้ไขเมื่อชุดประกอบการทำให้เป็นอนุกรมปิดอยู่
นักพัฒนาไอที

1

การเพิ่มข้อมูลโค้ดด้านล่างลงในไฟล์ app.config ใช้งานได้ในกรณีของฉัน ฉันใช้ Windows XP พร้อม VS2010 service pack 1

<configuration>
  <runtime>
    <loadFromRemoteSources enabled="true" />
  </runtime>
</configuration>

0

เช่นเดียวกับ FYI หากคุณใช้ Windows 7 ไฟล์ sgen.exe สามารถพบได้ที่:

C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin \ NETFX 4.0 เครื่องมือ

ฉันต้องสร้าง sgen.exe.config และวางไว้ที่นั่นแล้วปัญหานี้ก็หายไป


0

ทั้งที่unblockไม่ได้ผลconfigสำหรับฉัน เคล็ดลับสำหรับฉันคือเคล็ดลับเกี่ยวกับcaspolอะไร ฉันวิ่ง

 %windir%\Microsoft.NET\Framework\v2.0.50727\CasPol.exe -m -ag 1.2 -url file://UncPathName/UncSubPath/* FullTrust

และฉันก็พร้อมที่จะไปไม่จำเป็นต้องรีสตาร์ท VisualStudio


0

ฉันพบปัญหาที่คล้ายกันและในที่สุดฉันก็สามารถแก้ไขมันได้โดยการลบไฟล์ licenses.licx ในโฟลเดอร์ Properties ของโซลูชัน


0

ในกรณีเช่นฉันการยกเลิกการปิดกั้นไม่ใช่วิธีแก้ปัญหาเนื่องจากการยกเลิกการปิดกั้นไม่ปรากฏในคุณสมบัติไฟล์ dll ของฉัน คอยค้นหาและปิดไฟล์โซลูชันของฉันและเปิดใหม่โดยใช้ C: คัดลอกในเครื่องแทนเส้นทาง UNC เครือข่ายไปยังไฟล์ sln โครงการ สามารถเผยแพร่ได้หลังจากไปเส้นทางนี้


0

ในกรณีของฉันบล็อก dlls

ในการเลิกบล็อกไฟล์ทั้งหมดในโฟลเดอร์ฉันใช้ power shell ด้วยคำสั่งต่อไปนี้

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