বিল্ড ত্রুটি: আপনাকে অবশ্যই সিস্টেম.রুনটাইমের একটি রেফারেন্স যুক্ত করতে হবে


209

আমি একটি একেবারে নতুন এএসপি.নেট এমভিসি 5.1 সমাধান প্রস্তুত করছি। আমি একগুচ্ছ নুগেট প্যাকেজ যুক্ত করছি এবং এটি জুরব ফাউন্ডেশন ইত্যাদির সাথে সেট আপ করছি etc.

এর অংশ হিসাবে, আমি একটি ইন-হাউস নুগেট প্যাকেজটিতে একটি রেফারেন্স যুক্ত করেছি যা একটি পোর্টেবল ক্লাস লাইব্রেরি এবং আমি মনে করি এটি বিল্ড সার্ভারে একটি সমস্যা সৃষ্টি করছে।

TeamCity এর সাথে বিল্ডটি ব্যর্থ করে:

'সিস্টেম.অজেক্ট' প্রকারটি এমন কোনও সমাবেশে সংজ্ঞায়িত করা হয় যা রেফারেন্স নেই। আপনাকে অবশ্যই সমাবেশের 'সিস্টেম.রুনটাইম, সংস্করণ = 4.0.0.0 এ একটি রেফারেন্স যুক্ত করতে হবে

রেজার ওয়েব পৃষ্ঠাগুলি সংকলন করার সময় আমি মূলত একই বা অনুরূপ ত্রুটির জন্য ফিক্স যুক্ত করেছি, যেটি ফিক্সটি মধ্যে রয়েছে web.config

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

তবে ইস্যুটি অমীমাংসিত।

উত্তর:


216

এই ফিক্সটি বাস্তবায়নের জন্য প্রথমে বিদ্যমান ওয়েবকনফিগ সংকলন বিভাগটি প্রসারিত করুন যা ডিফল্টরূপে দেখে:

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

একবার প্রসারিত হওয়ার পরে আমি নিম্নলিখিত নতুন কনফিগারেশন এক্সএমএলকে যুক্ত করেছিলাম যেমনটি আমার নির্দেশ ছিল:

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

চূড়ান্ত ওয়েবকনফিগ ট্যাগগুলি দেখতে এই জাতীয় হওয়া উচিত:

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

2
এই ইস্যুটি এমভিসি প্রকল্পে 4.5.৪২ লক্ষ্যবস্তুতে চিহ্নিত হয়েছিল, এটি কোনও পরিচিত পিসিএল নয়, তবে অনেকগুলি নিউগেট প্যাকেজ রয়েছে। আমি বিশ্বাস করি যে VS2013 আনইনস্টল করা এটিকে ট্রিগার করেছিল তবে আমি এটিকে সত্য হিসাবে জানি না। এক্স-পেজডলিস্টের উল্লেখ করা ভিউগুলিতে কেবল ত্রুটি প্রকাশ পেয়েছে। প্রকল্পের ওয়েব কোডফাইজে রেফারেন্স যুক্ত করা (ওয়েবকনফিগের দেখা নয়) এটি স্থির করেছে।
গ্রেগ টেরেল

1
@ গ্রেগেরেলেল এক্স.প্যাজডলিস্টের একটি পুরানো সংস্করণ থেকে আপগ্রেড করার পরে আমার এই ঠিক সমস্যাটি ছিল। খুবই হতাশাজনক. কাজটি রেফারেন্স যুক্ত করার পরে, আমি যা করেছি তা .vsপ্রকল্পটি বন্ধ করার পরে ফোল্ডারটি মুছে ফেলা হয়েছে (নাম বদলে দেওয়া) , এটি আবার খোলা, web.configএন্ট্রি সরানো এবং এখন এটি তৈরি করে এবং সূক্ষ্মভাবে চলে।
মার্ডক্সক্স

@ মার্ডক্সক্স আমি একই সমস্যা পেয়েছি। ভিএস বা এক্স.পেজডলিস্ট নিয়ে সমস্যা আছে? যদি এটি কোনও ভিএস বাগ হয় তবে আমি ওয়েবকনফিগকে প্যাচ করতে পারি, তবে সমস্যাটি যদি এক্স.প্যাজডলিস্টের সাথে থাকে তবে আমি .config ফাইলগুলি পরিবর্তন করতে চাই না।
জেকমস

@ জ্যাকমস আমি আপনার গিথুব
মারডক্সক্স

3
আমার .NET 4.5.1 প্রোজেক্টে MoreLINQ ইনস্টল করার পরে এই ত্রুটিটি পেয়েছে। এই উত্তর এটি সমাধান করেছে।
ক্রিস মোসচিনি

125

এই সিস্টেমে একটি রেফারেন্স যুক্ত করা হচ্ছে un

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

যদিও সেই স্পষ্ট পথে সেই ফাইলটি বিল্ড সার্ভারে বিদ্যমান নেই।

আমি একবার পিসিএল এবং এই ফ্যাকাসে কিছু ডকুমেন্টেশন পেয়েছি তবে আরও তথ্যের সাথে ফিরে পোস্ট করব।

হালনাগাদ

হ্যাঁ পুরো ইন্টারনেটে ফ্যাসাদ অ্যাসেমব্লিতে খুব বেশি কিছু নেই।

গুগল:

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

2
আপনার নির্দিষ্ট করা ফোল্ডারের এ ডিএলএল ফাইল খুঁজে পাচ্ছি না থাকে, তাহলে আপনি উইন্ডোজ SDK এর ইনস্টল করতে পারেন যেমন ব্যাখ্যা করেছিলেন: stackoverflow.com/a/14517992/3918598
user3918598

ধন্যবাদ। উপরের লিঙ্কটি 4.5.1 এসডিকে ইনস্টল করার পরে কাজ করেছে।
ম্যাট বেকম্যান 10'14

40
মাইক্রোসফ্ট সাপোর্টে এখন একটি কেবি নিবন্ধ রয়েছে যা এটি সম্বোধন করে।
পিটার মাজেদ

1
@ পিটারমজিদ আপনার উত্তরটি উত্তর হিসাবে এখানে পোস্ট করা উচিত। টিপটির জন্য অনেক ধন্যবাদ!
জুলাইলগন

3
এটির কাজটি করার জন্য আমাকে 'কপিরাইট লোকাল' সেট করতে হয়েছিল
ফেট01

28

একমাত্র উপায় যা আমার পক্ষে কাজ করেছিল। অ্যাসেম্বলিটি ওয়েবকনফাইগ এ যুক্ত করুন

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

1
ধন্যবাদ লোরেনা! আমার জন্য কাজ করেছেন
অ্যানিয়া মার্টিনেজ

ওয়ান-লাইনার কাজ করা, গ্রন্থাগারের পথে নির্ভর করে না এবং কোনও কিছু ইনস্টল করার প্রয়োজন নেই, তা গ্রহণ করা উচিত!)
ইভান জাভেরেভ

এই উত্তরটি যেমন শীর্ষ @Baahubali দ্বারা উত্তর ভোট দিয়েছেন একই
Jesper Mygind

27

গৃহীত উত্তরে @ পিটারমাজিদের মন্তব্য আমাকে একটি সম্পর্কিত সমস্যা থেকে মুক্তি দিতে সহায়তা করেছে। আমি পোর্টেবল লাইব্রেরিটি ব্যবহার করছি না, তবে একটি নতুন উইন্ডোজ সার্ভার 2012 ইনস্টল করার ক্ষেত্রে একই বিল্ড ত্রুটি রয়েছে, যেখানে আমি টিমসিটি চালাচ্ছি।

মাইক্রোসফ্ট .NET ফ্রেমওয়ার্ক ইনস্টল করা 4.5.1 বিকাশকারী প্যাকটি এই সমস্যার যত্ন নিয়েছিল (আলাদাভাবে এমএস বিল্ড সরঞ্জাম ইনস্টল করার পরে )।


5
কোন ধারণা 4.6 দিয়ে কি করতে হবে? আমি আশেপাশে কোনও বিকাশকারী প্যাক দেখতে পাচ্ছি না।
georgiosd

4
আমার কাছে 4.5.1 এবং 4.5.2 ডিভ প্যাক রয়েছে এবং এখনও এই ত্রুটি হচ্ছে। ধারনা? আমি আমার 25 টি প্রকল্পে এটি উল্লেখ করতে চাই না। কিছু কারণে অন্যান্য 25 টির প্রয়োজন হয় না।
abatishchev

ভাল প্রশ্ন - কমপক্ষে বিল্ড অটোমেশন অবস্থান থেকে, আমি এখনও 4.5.2 বা 4.6 এর সাথে ডিল করি নি।
sfuqua

আমার ধারণা আপনি যদি সত্যিই আটকে থাকেন তবে আপনি সর্বদা ফ্রি ভিজুয়াল স্টুডিও সম্প্রদায় পরিষেবা সংস্করণটিকে পপ করে রাখতে এবং তা আপ টু ডেট রাখতে পারেন।
লুক পুপলেট

এই বিকাশকারী প্যাকগুলি কেন ইনস্টল করতে হবে তা আমি বুঝতে পারি না। আমি ভিএস2013 প্রো ইনস্টল করেছি। তা কি যথেষ্ট নয়? তবে এটি এখানে সমস্যার সমাধান করেছে। ধন্যবাদ।
মাইক ডি ক্লার্ক

10

ভিএস 2015 (এমভিসি যদিও নয়) এবং এমনকি একটি ওয়ার্কস্টেশনে একই সমাধানে হলেও অন্যটিতে নয় এমন কিছু সমাধানে আমার এই সমস্যাটি ছিল। .NET সংস্করণ 4.6 এ পরিবর্তন করে PCL উল্লেখ করার পরে ত্রুটিগুলি শুরু হয়েছিল।

সমাধানটি সহজ: সমাধানটি বন্ধ করুন এবং সমাধান হিসাবে একই ফোল্ডারে লুকানো .vs ফোল্ডারটি মুছুন

অন্যান্য উত্তরের পরামর্শ অনুসারে নিখোঁজ রেফারেন্সগুলি যুক্ত করাও সমস্যার সমাধান করে, তবে আপনি আবার উল্লেখগুলি সরিয়ে দেওয়ার পরেও ত্রুটিটি সমাধান হয়ে যায়।

টিমসিটি হিসাবে, আমি বলতে পারি না যেহেতু আমার কনফিগারেশনে কখনও সমস্যা হয়নি had তবে নিশ্চিত হয়ে নিন যে আপনি আপনার ডিবাগিং প্রচেষ্টার অংশ হিসাবে কাজের ক্যাটালগটি পুনরায় সেট করেছেন।


6

এটি একটি পুরানো সমস্যা তবে আমাদের অবিচ্ছিন্ন ইন্টিগ্রেশন সার্ভারে একটি বিল্ড পাইপলাইন ঠিক করার জন্য আমি আজ এটির মুখোমুখি হয়েছি। যোগ করার পদ্ধতি

<Reference Include="System.Runtime" />

আমার .csprojফাইলটি আমার জন্য সমস্যার সমাধান করেছে।

কিছুটা প্রসঙ্গ: আগ্রহী প্রকল্পটি একটি সম্পূর্ণ। নেট ফ্রেমওয়ার্ক 4.6.1 প্রকল্প, উন্নয়ন মেশিনগুলিতে বিল্ড সমস্যা ছাড়াই। সমস্যাটি কেবলমাত্র বিল্ড সার্ভারে উপস্থিত হয়, যা আমরা নিয়ন্ত্রণ করতে পারি না, এটি কোনও ভিন্ন এসডিকে সংস্করণ বা অনুরূপ কোনও কারণে হতে পারে।

নিখোঁজ রেফারেন্সের<Reference মূল্যে প্রস্তাবিত যুক্ত বিল্ড ত্রুটিটি যুক্ত করাভিজ্যুয়াল স্টুডিওতে সতর্কতা (রেফারেন্স ট্রি এ যুক্ত প্রবেশের উপর হলুদ ত্রিভুজ যুক্ত করা।

আমি আশা করি এটি একই ধরণের পরিস্থিতিতে লোককে সহায়তা করতে পারে ...


আমার জন্যও একই সমাধানের সমাধান করা হয়েছে
নিকোলা সেলিয়েন্টো

3

আপনি টার্গেট করছেন .NET সংস্করণটির জন্য .NET রানটাইম পাশাপাশি লক্ষ্য প্যাকটি ইনস্টল করুন।

বিকাশকারী প্যাকটি কেবল এই দুটি জিনিসই একসাথে বান্ডিল হয়েছে তবে আজকের হিসাবে এটির 4.6 সংস্করণ রয়েছে বলে মনে হয় না তাই আপনাকে দুটি আইটেম আলাদাভাবে ইনস্টল করতে হবে।

ডাউনলোডগুলি এখানে পাওয়া যাবে: http://blogs.msdn.com/b/dotnet/p/dotnet_sdks.aspx#


3

আমি এএসপি। নেট এমভিসি প্রকল্পটি আমাদের কোডবেজে সামান্য আপডেটের পরে চালানোর চেষ্টা করার পরেও এই সমস্যার মুখোমুখি হয়েছি, যদিও এটি ত্রুটি ছাড়াই সংকলিত হয়েছে:

সংকলক ত্রুটি বার্তা: CS0012: টাইপ 'System.Object' একটি সমাবেশে সংজ্ঞায়িত করা হয় যা রেফারেন্স নেই। আপনাকে অবশ্যই সমাবেশ 'সিস্টেম.রুনটাইম, সংস্করণ = 4.0.0.0, সংস্কৃতি = নিরপেক্ষ, পাবলিক্যকিটোকেন = b03f5f7f11d50a3a' এ একটি রেফারেন্স যুক্ত করতে হবে।

আমাদের প্রকল্পটি কখনও এই সমস্যার মধ্যে যায় নি, সুতরাং মূল কারণটি খুঁজে বের করার আগে কনফিগারেশন ফাইলগুলি পরিবর্তন করা সম্পর্কে আমি সংশয়ী ছিলাম। ত্রুটি লগগুলি থেকে আমি এই বিশদ সংকলক আউটপুটটি সনাক্ত করতে সক্ষম হয়েছি যা সত্যই ঘটছে তা নির্দেশ করে:

সতর্কতা CS1685: পূর্বনির্ধারিত টাইপ ' সিস্টেম.রুনটাইম.কম্পাইলার সার্ভিসস। এক্সটেনশন অ্যাট্রিবিউট ' গ্লোবাল ওরফে একাধিক সমাবেশে সংজ্ঞায়িত হয়েছে; 'সি: \ উইন্ডোজ \ মাইক্রোসফ্ট.নেট \ ফ্রেমওয়ার্ক 64 \ v4.0.30319 \ mscorlib.dll' থেকে সংজ্ঞা ব্যবহার করে

সি: \ ব্যবহারকারীগণ min প্রশাসক \ সফ্টওয়্যার বিকাশ \ উত্স-নিয়ন্ত্রণ \ বাইনারিস \ প্রকাশ করুন \ ওয়েব অ্যাপ \ ভিউ \ অ্যাকাউন্ট \ সূচক.কাশটিএমএল (35,20): ত্রুটি CS0012: টাইপ 'সিস্টেম.অজেক্ট' একটি অ্যাসেমব্লিতে সংজ্ঞায়িত করা হয় যা রেফারেন্স না। আপনাকে অবশ্যই সমাবেশ 'সিস্টেম.রুনটাইম, সংস্করণ = 4.0.0.0, সংস্কৃতি = নিরপেক্ষ, পাবলিক্যকিটোকেন = b03f5f7f11d50a3a' এ একটি রেফারেন্স যুক্ত করতে হবে।

সি: \ উইন্ডোজ \ মাইক্রোসফ্ট.নেট \ ফ্রেমওয়ার্ক 64 \ ভি 4.0.30319 \ অস্থায়ী এএসপি.এনইটি ফাইলগুলি se meseems.webapp \ 68e2ea0f \ 8c5ee951 \ সমাবেশ l dl3 \ 52ad4dac \ 84698469_3bb3d401 \ সিস্টেম.সংশ্লিষ্টকরণ.এলএকশন সংগ্রহশৈল। পূর্ববর্তী ত্রুটি থেকে)

স্পষ্টতই আমাদের প্রকল্পে যুক্ত হওয়া একটি নতুন প্যাকেজটি .NET ফ্রেমওয়ার্কের একটি পুরানো সংস্করণ উল্লেখ করেছে, যা "একাধিক অ্যাসেমব্লিতে সংজ্ঞা" ইস্যু (সিএস 1685) সৃষ্টি করে, যা রানটাইমের সময় রেজার ভিউ সংকলক ত্রুটির দিকে পরিচালিত করে।

আমি বেমানান প্যাকেজটি সরিয়ে ফেলেছি (System. Collections.Immutable.dll) এবং সমস্যাটি হওয়া বন্ধ হয়ে গেছে। তবে, যদি আপনার প্রকল্পে প্যাকেজটি সরানো না যায় তবে আপনাকে বাহুবলির উত্তর চেষ্টা করতে হবে ।


2

আমাদের টিএফএস ২০১৩ বিল্ড সার্ভারে আমারও পরীক্ষার প্রকল্পে একই ত্রুটি হয়েছিল। মূল ওয়েব প্রকল্পের সাথে। নেট 4.5.৪.১ চলছে।

আমি সিস্টেম রানটাইমের একটি ন্যুগেট প্যাকেজ ইনস্টল করেছি এবং প্যাকেজ \ System.Runtime.4.3.0 \ ref \ নেট462 \ System.Runtime.dll থেকে রেফারেন্স যুক্ত করেছি

এটা আমার জন্য এটি সমাধান।


আপনি সম্ভবত এটি নেট
.৪.৫.১

1
.. এবং তবুও এটি কাজ করেছিল, আমার জন্যও। ... \ 45 \ ... ফোল্ডারের পরে আর কোনও পছন্দ নেই যার মধ্যে কেবল একটি স্টাব ফাইল রয়েছে _._
নাথানছের



1

একটি ওয়েব এপিআই প্রকল্প এবং বেশ কয়েকটি গ্রন্থাগার প্রকল্পের সমাধানে আমার এই সমস্যাটি ছিল। গ্রন্থাগারগুলির একটি প্রকল্প নির্মাণে উদ্বিগ্ন ছিল, ত্রুটিগুলি সহ বলেছিল যে ityক্য বৈশিষ্ট্যগুলি "বৈধ" গুণাবলী নয়, এবং তারপরে একটি ত্রুটি বলেছিল যে আমার সিস্টেমের রেফারেন্স করা দরকার un রুনটাইম।

অনেক অনুসন্ধানের পরে, 4.5.2 বিকাশকারী প্যাকটি পুনরায় ইনস্টল করা, এবং কিছুই কাজ করে না, আমি বুঝতে পেরেছিলাম এটি সম্ভবত একটি সংস্করণ নয়। সুতরাং আমি প্রতিটি প্রকল্পের বৈশিষ্ট্যগুলির দিকে নজর রেখেছি এবং খুব বেস লাইব্রেরিগুলির একটিতে 4.5 লক্ষ্য ছিল এবং অন্য প্রতিটি 4.5.4 লক্ষ্যবস্তু ছিল। আমি এটিকে একটি পরিবর্তন করেও 4.5.2 টার্গেট করেছিলাম এবং ত্রুটিগুলি চলে যায়।


1

আমি "সি: \ প্রোগ্রাম ফাইলগুলি (x86) ference রেফারেন্স অ্যাসেমব্লিজগুলি \ মাইক্রোসফ্ট me ফ্রেমওয়ার্ক N v4.5.1 \ Facades \ system.runtime.dll" প্রোডাকশন সার্ভারের বিন ফোল্ডারে কপি করেছি, এটি সমস্যার সমাধান করে।


আরেকটি উপায় হ'ল প্রকল্পটিতে এই অ্যাসেমব্লির একটি উল্লেখ যুক্ত করুন এবং স্থানীয় কপি করুন = সত্য সেট করুন।
জন ম্যাক

0

https://www.microsoft.com/en-us/download/details.aspx?id=49978 মাইক্রোসফ্ট। নেট ফ্রেমওয়ার্ক 4.6.1 বিকাশকারী প্যাক ইনস্টল করুন এবং ওয়েবকনফিগ ফাইলে কোডের এই লাইনটি যুক্ত করুন

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

0

আমার জন্য কেবল এই কোড লাইনে সহায়তা করেছে:

Assembly.Load("System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a");


-1

নুগেট প্যাকেজ ম্যানেজারের উপরে রেফারেন্সটি সরিয়ে ফেলা এবং এটি পুনরায় যুক্ত করা আমার জন্য সমস্যার সমাধান করেছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.