VSTS 2010 SGEN: lỗi: Không thể tải tệp hoặc lắp ráp (Ngoại lệ từ HRESULT: 0x80131515)


106

Tôi đang gặp sự cố lạ với VS2010. Chúng tôi sử dụng TFS để xây dựng các dll API của mình và chúng tôi đã từng tham chiếu chúng trong các dự án của mình, thiết kế một ổ đĩa mạng được ánh xạ hoàn toàn đáng tin cậy. Chúng tôi đã làm việc như vậy trong ít nhất hai năm và mọi thứ hoạt động hoàn hảo.

Hôm nay, tôi đã chuyển đổi một ứng dụng web thành vs2010 và khi tôi biên dịch nó trong Bản phát hành, nó mang lại cho tôi:

SGEN: error: Không thể tải tệp hoặc tệp lắp ráp ': /// L: \ Api \ Release API_20100521.1 \ Release \ CS.API.Exceptions.dll' hoặc một trong các phụ thuộc của nó. Hoạt động không được hỗ trợ. (Ngoại lệ từ HRESULT: 0x80131515)

Điều kỳ lạ là nó hoạt động khi ở dưới cấu hình Gỡ lỗi ...

Tôi đã thử thêm

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

vào app.config mà vẫn không gặp may (Xem http://social.msdn.microsoft.com/Forums/vi/msbuild/thread/d12f6301-85bf-4b9e-8e34-a06398a60df0http://msdn.microsoft.com/ en-us / library / dd409252 (VS.100) .aspx )

Tôi khá chắc chắn rằng vấn đề này là do visual studio hoặc msbuild, vì mã của chúng tôi sẽ không chạy từ mạng chia sẻ khi ở trong prod vì tất cả các dll được tham chiếu đều được sao chép vào thư mục bin.

Nếu ai có giải pháp (hoặc chỉ là ý tưởng cho đường dẫn tìm kiếm), vui lòng cho tôi biết!

Chỉnh sửa: Hóa ra nó đang hoạt động ở chế độ Gỡ lỗi vì việc tạo các cụm tuần tự hóa đã bị Tắt. Như tiêu đề đã nói, đó thực sự là một vấn đề của SGEN vì chính tiện ích này nói rằng đường dẫn không đáng tin cậy ...

Câu trả lời:


213

Tôi đã có thể khắc phục lỗi này bằng cách tìm DLL lắp ráp trong Windows Explorer, nhấp chuột phải, chọn Thuộc tính, sau đó nhấn nút "bỏ chặn". DLL có một luồng đang đánh dấu nó là tệp bên ngoài - và bằng cách nhấp vào bỏ chặn, bạn sẽ xóa chỉ định đó.


làm việc ... chỉ phát triển để có vấn đề này .. ngay từ TFS ... lạ
spaghetticowboy

Lý do nó bị khóa là do mã nguồn của tôi được chia sẻ. Đã chuyển mã sang đĩa cục bộ - tất cả đều ổn. (Quyền .NET4 SGEN đối với các vấn đề về cổ phiếu).
thedrs

31
Chúa phù hộ bạn. Nghiêm túc.
FAtBalloon

Xin lưu ý rằng hầu hết các công ty không cho phép truy cập quản trị viên cục bộ hoặc vô hiệu hóa rõ ràng quyền truy cập vào nút "Bỏ chặn" đối với người dùng thông thường, bao gồm cả nhà phát triển.
kevinarpe

2
Tôi đã gặp sự cố này với các tệp DLL được sao chép từ tệp zip.
79IT

59

Tôi vừa gặp sự cố tương tự / tương tự trên máy chủ bản dựng TFS trong đó bản dựng đang tham chiếu đến dll từ một mạng chia sẻ.

Vấn đề là mô hình chính sách bảo mật CLR v4 đã thay đổi so với các phiên bản trước và không phải là các tập hợp hộp cát như trước.

Để khắc phục sự cố của bạn, chỉ cần tìm vị trí của sgen.exe và tạo sgen.exe.config trong cùng một thư mục với nội dung sau:

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

sgen.exe thường ở

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

Bạn có thể đọc về một số thay đổi xung quanh chính sách CAS trong .NET 4.0 trong bài đăng blog này: Liên kết


1
vâng, tôi đã xem qua giải pháp này nhưng vô ích đối với tôi, tôi không thay đổi bất cứ điều gì ... chúng tôi đã giải quyết khi các cụm tuần tự hóa bị Tắt
Nhà phát triển CNTT

7
Đối với thông tin khác, SGEN thường có tại "C: \ Program Files \ Microsoft SDKs \ Windows \ v7.0A \ bin \ NETFX 4.0 Tools"
Steve Cooper

Nhà phát triển CNTT: Trong trường hợp của tôi, không thể tắt việc tạo các cụm tuần tự hóa vì tôi cần chúng. Nhưng nguyên nhân biến các cụm tuần tự hóa cũng có thể là một giải pháp.
Martin Hyldahl

1
Lưu ý rằng nếu đó là một máy 64 bit, bạn cần phải tạo ra dưới ... \ Bin \ NETFX 4,0 Tools \ x64 \
Vivek Ayer

1
Đối với VS2015, hãy định vị nó tại: C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v10.0A \ bin \ NETFX 4.6 Tools
Farshid

23

Gặp sự cố tương tự và thay đổi cấu hình không hoạt động. Chỉ khi tôi đặt Generate Serialization Assembly thành tắt trong các thuộc tính của dự án thì nó mới hoạt động.


Làm việc cho tôi là tốt. Đây cũng là câu trả lời chính xác cho OP dựa trên nhận xét đã chỉnh sửa của anh ấy trong câu hỏi.
akousmata

Đã làm cho tôi. Tks.
Vinicius Gonçalves

1
Thuộc tính Project -> Build -> Generate serialization assembly là Auto, sau khi thiết lập Off, quá trình biên dịch bắt đầu hoạt động như một sự quyến rũ. +1 và thanx.
Honza P.

Điều đó cũng hiệu quả trong trường hợp của tôi. Dù sao, tôi tự hỏi tắt chính xác nghĩa là gì, vì theo mặc định, nó được bật cho cấu hình Release: Tôi muốn chắc chắn rằng nó không có bất kỳ tác dụng phụ nào đối với ứng dụng khi tôi xuất bản nó trên môi trường sản xuất.
Asimov

Chỉ có một dự án gặp sự cố này - chuyển nó từ Tự động sang Tắt - dự án này đang tham chiếu đến SOAP WS.
Subha


3

Tôi đã gặp vấn đề chính xác này và đã khắc phục nó bằng cách thêm sgen.exe.config trong C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin \ NETFX 4.0 Tools

với cấu hình đơn giản này như những người khác đã nói

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

2

Đối với những người bạn đang chạy phiên bản 64 bit của dịch vụ xây dựng TFS, tôi phải tạo tệp cấu hình theo đường dẫn sau:

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

Và nội dung tệp:

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

1

Tôi gặp vấn đề tương tự, đã tải lắp ráp trong GAC và hoạt động


vấn đề là chúng tôi không muốn những người đó trong GAC. chúng tôi đã giải quyết khi các cụm tuần tự hóa bị Tắt
Nhà phát triển CNTT

1

Thêm đoạn mã bên dưới vào tệp app.config đã hoạt động trong trường hợp của tôi. Tôi đang chạy Windows XP, với gói dịch vụ VS2010 1.

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

0

Cũng giống như FYI nếu bạn đang chạy Windows 7, tệp sgen.exe có thể được tìm thấy tại:

C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin \ NETFX 4.0 Công cụ

Tôi đã phải tạo sgen.exe.config và đặt nó ở đó và sau đó vấn đề này đã biến mất.


0

Cả cái unblockcũng không configlàm việc cho tôi. Bí quyết cho tôi là mẹo này về cái gìcaspol . Tôi đã chạy

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

Và tôi đã sẵn sàng sử dụng, thậm chí không cần khởi động lại VisualStudio.


0

Tôi gặp sự cố tương tự và cuối cùng tôi đã giải quyết được bằng cách xóa tệp license.licx trong thư mục Thuộc tính của giải pháp.


0

Trong trường hợp như tôi, Bỏ chặn không phải là một giải pháp, vì Bỏ chặn không xuất hiện trên các thuộc tính tệp dll của tôi. Tiếp tục tìm kiếm và kết thúc việc đóng tệp giải pháp của tôi và mở lại bằng cách sử dụng bản sao C: cục bộ thay vì đường dẫn UNC mạng đến tệp sln của dự án. Đã có thể xuất bản sau khi đi tuyến đường này.


0

Trong trường hợp của tôi, một loạt các con dlls đã bị chặn.

Để bỏ chặn tất cả các tệp trong thư mục, tôi đã sử dụng power shell bằng lệnh sau

dir -Path [directory path] -Recurse | Unblock-File
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.