Lỗi xây dựng: Bạn phải thêm một tham chiếu đến System.R.78


209

Tôi đang chuẩn bị một giải pháp ASP.NET MVC 5.1 hoàn toàn mới. Tôi đang thêm vào một loạt các gói NuGet và thiết lập nó với Zurb Foundation, v.v.

Là một phần trong đó, tôi đã thêm một tham chiếu đến gói NuGet nội bộ là Thư viện lớp di động và tôi nghĩ rằng điều này gây ra sự cố trên máy chủ bản dựng.

TeamCity thất bại trong quá trình xây dựng với:

Loại 'System.Object' được định nghĩa trong một hội đồng không được tham chiếu. Bạn phải thêm một tham chiếu để lắp ráp 'System.R.78, Version = 4.0.0.0

Ban đầu tôi đã thêm bản sửa lỗi cho cùng một lỗi hoặc tương tự khi biên dịch các trang web của Dao cạo, bản sửa lỗi đó nằm trong web.config

<compilation ... >
  <assemblies>
    <add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  </assemblies>
</compilation>

Tuy nhiên, vấn đề chưa được giải quyết.

Câu trả lời:


216

Để thực hiện sửa lỗi, trước tiên hãy mở rộng phần biên dịch web.config hiện có trông như thế này theo mặc định:

<compilation debug="true" targetFramework="4.5"/>

Sau khi được mở rộng, sau đó tôi đã thêm XML cấu hình mới sau đây như được hướng dẫn:

  <assemblies>     
    <add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />   
  </assemblies>

Các thẻ web.config cuối cùng sẽ trông như thế này:

<compilation debug="true" targetFramework="4.5">
  <assemblies>     
    <add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />   
  </assemblies>
</compilation>

2
Vấn đề này len lỏi vào một dự án MVC nhắm mục tiêu 4.52, không biết PCL nhưng nhiều gói nuGet. Tôi tin rằng việc gỡ cài đặt VS2013 đã kích hoạt điều này nhưng tôi không biết đó là sự thật. Lỗi chỉ xuất hiện trong Chế độ xem tham chiếu X-PagedList. Thêm tham chiếu vào dự án web.config (không xem web.config) đã sửa nó.
Greg Terrell

1
@GregTerrell Tôi vừa gặp sự cố chính xác này sau khi nâng cấp từ phiên bản X.PagedList cũ. Rất bực bội. Thêm tham chiếu hoạt động, sau đó những gì tôi đã làm đã bị xóa (đổi tên) .vsthư mục sau khi đóng dự án, mở lại, xóa web.configmục nhập và bây giờ nó xây dựng và chạy tốt.
Mardoxx

@Mardoxx Tôi cũng gặp vấn đề tương tự. Là vấn đề với VS hoặc X.PagedList? Nếu đó là lỗi VS, tôi có thể vá web.config, nhưng tôi không muốn thay đổi tệp .config nếu sự cố xảy ra với X.PagedList.
Jecoms

@Jecoms Tôi đã trả lời vấn đề github của bạn :) github.com/kpi-ua/X.PagedList/issues/49#issuecomment-243515362
Mardoxx

3
Đã gặp lỗi này sau khi cài đặt MoreLINEQ vào dự án .Net 4.5.1 của tôi. Câu trả lời này đã giải quyết nó.
Chris Moschini

125

Thêm một tham chiếu đến cụm System.R.78.dll này đã khắc phục sự cố:

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\Facades\System.Runtime.dll

Mặc dù tệp đó trong đường dẫn rõ ràng đó không tồn tại trên máy chủ xây dựng.

Tôi sẽ đăng lại với nhiều thông tin hơn sau khi tôi tìm thấy một số tài liệu về PCL và những Mặt tiền này.

Cập nhật

Vâng, không có gì nhiều trên các cụm mặt tiền trên toàn bộ internet.

Google:

(Facades OR Facade) Portable Library site:microsoft.com

2
Nếu bạn không thể tìm thấy các tệp dll trong thư mục được chỉ định, bạn có thể cài đặt Windows SDK như được giải thích: stackoverflow.com/a/14517992/3918598
user3918598

Cảm ơn. Liên kết trên hoạt động sau khi cài đặt SDK 4.5.1.
Matt Beckman

40
Hiện tại có một bài viết KB về Hỗ trợ của Microsoft giải quyết vấn đề này.
Peter Majeed

1
@PeterMajeed Bạn thực sự nên đăng bình luận đó là câu trả lời ở đây. Cảm ơn rất nhiều cho tiền boa!
julealgon

3
Tôi đã phải đặt 'Sao chép cục bộ' thành đúng để làm cho nó hoạt động
Phate01

28

Cách duy nhất làm việc cho tôi. Thêm phần lắp ráp vào web.config

<compilation debug="true" targetFramework="4.5">
  <assemblies>     
    <add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />   
  </assemblies>
</compilation>

1
Cảm ơn Lorena! Làm việc cho tôi
Annia Martinez

làm việc một lớp, không phụ thuộc vào đường dẫn đến thư viện và không yêu cầu cài đặt bất cứ thứ gì, nên được chấp nhận!)
Ivan Zverev

Câu trả lời này giống như câu trả lời được bình chọn hàng đầu của @Baahubali
Jesper Mygind

27

Nhận xét của @ PeterMajeed trong câu trả lời được chấp nhận đã giúp tôi giải quyết một vấn đề liên quan. Tôi không sử dụng thư viện di động, nhưng có cùng lỗi xây dựng trên bản cài đặt Windows Server 2012 mới, nơi tôi đang chạy TeamCity.

Cài đặt Microsoft .NET Framework 4.5.1 Gói phát triển đã giải quyết vấn đề (sau khi đã cài đặt riêng Công cụ xây dựng MS ).


5
Bất kỳ ý tưởng phải làm gì với 4.6? Tôi không thấy một gói nhà phát triển xung quanh.
georgiosd 24/07/2015

4
Tôi có cả gói dev 4.5.1 và 4.5.2 và vẫn gặp lỗi này. Ý tưởng? Tôi không muốn tham khảo nó trong tất cả 25 dự án của mình. Bởi một số lý do khác 25 không yêu cầu nó.
abatishchev

Câu hỏi hay - Tôi chưa giải quyết 4.5.2 hoặc 4.6, ít nhất là từ quan điểm tự động hóa xây dựng.
sfuqua

Tôi đoán nếu bạn thực sự bế tắc, bạn luôn có thể bật Phiên bản dịch vụ cộng đồng Visual Studio miễn phí và luôn cập nhật.
Luke Puplett

Tôi không hiểu tại sao các gói nhà phát triển phải được cài đặt. Tôi đã cài đặt VS2013 Pro. Như vậy vẫn chưa đủ? Nhưng nó đã giải quyết vấn đề ở đây. Cảm ơn.
Mike de Klerk

10

Tôi đã gặp vấn đề này trong một số giải pháp trên VS 2015 (không phải MVC) và thậm chí trong cùng một giải pháp trên một máy trạm nhưng không phải trên một máy trạm khác. Các lỗi bắt đầu xuất hiện sau khi thay đổi phiên bản .NET thành 4.6 và tham chiếu PCL.

Giải pháp rất đơn giản: Đóng giải pháp và xóa thư mục .vs ẩn trong cùng thư mục với giải pháp.

Thêm các tham chiếu bị thiếu như được đề xuất trong các câu trả lời khác cũng giải quyết được vấn đề, nhưng lỗi vẫn được giải quyết ngay cả khi bạn xóa lại các tham chiếu.

Đối với TeamCity, tôi không thể nói vì cấu hình của tôi không bao giờ có vấn đề. Nhưng hãy chắc chắn rằng bạn đặt lại danh mục làm việc như là một phần của nỗ lực sửa lỗi của bạn.


6

Đây là một vấn đề cũ nhưng tôi đã phải đối mặt với nó ngày hôm nay để khắc phục một đường ống xây dựng trên máy chủ tích hợp liên tục của chúng tôi. Thêm

<Reference Include="System.Runtime" />

để .csprojtập tin của tôi giải quyết vấn đề cho tôi.

Một chút bối cảnh: dự án quan tâm là một dự án .Net framework 4.6.1 đầy đủ, không có vấn đề xây dựng trên các máy phát triển. Sự cố chỉ xuất hiện trên máy chủ bản dựng mà chúng tôi không thể kiểm soát được có thể do phiên bản SDK khác hoặc do lỗi tương tự.

Thêm đề xuất đã <Referencegiải quyết lỗi xây dựng, với giá của một tham chiếu bị thiếu cảnh báo (hình tam giác màu vàng trên mục nhập được thêm vào trong cây tham chiếu) trong Visual Studio.

Tôi hy vọng điều này có thể giúp mọi người trong các tình huống tương tự ...


Giải quyết cho tôi quá, trong một bối cảnh tương tự
Nicola Celiento

3

Cài đặt .NET Runtime cũng như gói nhắm mục tiêu cho phiên bản .NET bạn đang nhắm mục tiêu.

Gói dành cho nhà phát triển chỉ là hai thứ được gói cùng nhau nhưng cho đến ngày hôm nay dường như không có phiên bản 4.6 nên bạn sẽ phải cài đặt hai mục riêng biệt.

Tải xuống có thể được tìm thấy ở đây: http://bloss.msdn.com/b/dotnet/p/dotnet_sdks.aspx#


3

Tôi cũng đã phải đối mặt với vấn đề này khi cố gắng chạy một dự án .NET .NET MVC sau một bản cập nhật nhỏ cho cơ sở mã của chúng tôi, mặc dù nó đã được biên dịch mà không có lỗi:

Thông báo lỗi trình biên dịch: CS0012: Loại 'System.Object' được xác định trong một cụm không được tham chiếu. Bạn phải thêm một tham chiếu để lắp ráp 'System.R.78, Version = 4.0.0.0, Culture = trung tính, PublicKeyToken = b03f5f7f11d50a3a'.

Dự án của chúng tôi chưa bao giờ gặp phải vấn đề này, vì vậy tôi đã nghi ngờ về việc thay đổi các tệp cấu hình trước khi tìm ra nguyên nhân gốc. Từ nhật ký lỗi, tôi có thể xác định vị trí đầu ra của trình biên dịch chi tiết này, điều này chỉ ra điều gì đang thực sự xảy ra:

cảnh báo CS1685: Loại được xác định trước 'System.R nb.CompilerService.ExtensionAttribution ' được định nghĩa trong nhiều cụm trong bí danh toàn cầu; sử dụng định nghĩa từ 'c: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ mscorlib.dll'

c: \ Users \ Admin \ Development Development \ source-control \ Binaries \ Publish \ WebApp \ Views \ Account \ Index.cshtml (35,20): lỗi CS0012: Loại 'System.Object' được định nghĩa trong một hội đồng không được tham khảo. Bạn phải thêm một tham chiếu để lắp ráp 'System.R.78, Version = 4.0.0.0, Culture = trung tính, PublicKeyToken = b03f5f7f11d50a3a'.

c: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Tệp ASP.NET tạm thời \ meseems.webapp \ 68e2ea0f \ 8c5ee951 \ assembly \ dl3 \ 52ad4dac \ 84698469_3bb3d401 \ System.Collections.Imm lỗi trước đó)

Rõ ràng một gói mới được thêm vào dự án của chúng tôi đã tham chiếu một phiên bản .NET Framework cũ hơn, gây ra vấn đề "định nghĩa trong nhiều cụm" (CS1685), dẫn đến lỗi trình biên dịch dao cạo xem trong thời gian chạy.

Tôi đã xóa gói không tương thích (System.Collections.Immutable.dll) và sự cố đã ngừng xảy ra. Tuy nhiên, nếu gói không thể được gỡ bỏ trong dự án của bạn, bạn sẽ cần thử câu trả lời của Baahubali .


2

Trên máy chủ xây dựng Tfs 2013 của chúng tôi, tôi đã gặp lỗi tương tự, trong một dự án thử nghiệm. với dự án web chính đang chạy trên .Net 4.5.1.

Tôi đã cài đặt gói nuGet của System Runtime và thêm tham chiếu từ các gói \ System.R.78.4.3.0 \ ref \ net462 \ System.R.78.dll

Điều đó đã giải quyết nó cho tôi.


Điều đó có lẽ không nên hoạt động vì bạn đang bảo nó sử dụng .NET 4.6.2 DLL với dự án .NET 4.5.1
Chris Marisic

1
.. và nó đã làm việc, đối với tôi cũng vậy. Không có lựa chọn nào vì thư mục ... \ 45 \ ... chỉ có một tệp sơ khai trong đó được gọi là _._
nathanchere



1

Tôi đã gặp vấn đề này trong một giải pháp với dự án API Web và một số dự án thư viện. Một trong những dự án thư viện đang cố gắng xây dựng, với các lỗi cho biết các thuộc tính Unity không phải là thuộc tính "hợp lệ", và sau đó một lỗi nói rằng tôi cần tham chiếu System.R.78.

Sau nhiều lần tìm kiếm, cài đặt lại Gói nhà phát triển 4.5.2 và không có gì hoạt động, tôi đoán có lẽ nó chỉ là một phiên bản không phù hợp. Vì vậy, tôi đã xem xét các thuộc tính của mọi dự án và một trong những thư viện cơ bản đang nhắm mục tiêu 4.5 trong khi mọi thư viện khác đang nhắm mục tiêu 4.5.2. Tôi đã thay đổi mục tiêu đó thành mục tiêu 4.5.2 và các lỗi đã biến mất.


1

Tôi sao chép tệp "C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.5.1 \ Facades \ system.r nb.dll" vào thư mục bin của máy chủ sản xuất, điều này giải quyết vấn đề.


Một cách khác là thêm một tham chiếu đến hội đồng này trong dự án và đặt Copy Local = True.
John Mc


-1

Xóa tham chiếu qua Trình quản lý gói Nuget và thêm lại nó đã giải quyết vấn đề cho tôi.

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.