সমাধানে প্রকল্প নির্ভরতা ব্যবহার করা হলে এমএসবিল্ড রেফারেন্সগুলি (ডিএলএল ফাইল) অনুলিপি করে না


273

আমার ভিজ্যুয়াল স্টুডিও সমাধানে চারটি প্রকল্প রয়েছে (প্রত্যেকে প্রত্যেকে .NET 3.5 টার্গেট করে) - আমার সমস্যার জন্য কেবল এই দুটিই গুরুত্বপূর্ণ:

  1. মাইবেসপ্রজেক্ট <- এই শ্রেণীর পাঠাগারটি একটি তৃতীয় পক্ষের ডিএলএল ফাইলের উল্লেখ করে (elmah.dll)
  2. মাইওয়েবপ্রজেক্ট 1 <- এই ওয়েব অ্যাপ্লিকেশন প্রকল্পটির মাইবেসপ্রজেক্টের একটি উল্লেখ রয়েছে

আমি "রেফারেন্স যুক্ত করুন ..." My "ব্রাউজ করুন" ট্যাব → "এলমা.ডিএলএল" নির্বাচন করে ভিজ্যুয়াল স্টুডিওতে মাইবেসপ্রজেক্টে এলামাহ.ডিল রেফারেন্স যুক্ত করেছি ।

এলমা রেফারেন্সের বৈশিষ্ট্যগুলি নিম্নরূপ:

  • উপনাম - গ্লোবাল
  • স্থানীয় কপি করুন - সত্য
  • সংস্কৃতি -
  • বিবরণ - এএসপি.এনইটি-র জন্য মডিউল এবং হ্যান্ডলারের (ইএলএমএইচ) লগিংয়ের সময় ত্রুটি
  • ফাইলের ধরণ - সমাবেশ
  • পাথ - ডি: \ ওয়েবস \ অন্যান্য ফোল্ডার \ _myPath \ __ সরঞ্জামগুলি \ এলামাহ \ এলমাহ.ডিএল
  • সমাধান হয়েছে - সত্য
  • রানটাইম সংস্করণ - v2.0.50727
  • নির্দিষ্ট সংস্করণ - মিথ্যা
  • শক্ত নাম - মিথ্যা
  • সংস্করণ - 1.0.11211.0

ইন MyWebProject1 আমি প্রকল্প MyBaseProject রেফারেন্স যোগ করেছেন: → "প্রকল্প" ট্যাব → "MyBaseProject" নির্বাচন "রেফারেন্স ... যোগ করুন"। নিম্নলিখিত সদস্যদের ব্যতীত এই রেফারেন্সের বৈশিষ্ট্যগুলি সমান:

  • বর্ণনা -
  • পাথ - ডি: \ ওয়েবস \ সিএমএস \ মাইবেসপ্রজেক্ট \ বিন \ ডিবাগ \ মাইবেসপ্রজেক্ট.ডিল
  • সংস্করণ - 1.0.0.0

আমি যদি ভিজ্যুয়াল স্টুডিওতে বিল্ডটি চালনা করি তবে মাইবেসপ্রজেক্ট.ডিলের সাথে আমার মাইওয়েবপ্রজেক্ট 1-র বিন ডিরেক্টরিতে এলমাহ.ডিল ফাইলটি অনুলিপি করা হবে !

তবে আমি যদি সমাধানটির জন্য এমএসবিল্ডটি পরিষ্কার ও চালিত করি তবে (ডি: \ ওয়েবস \ সিএমএস> সি: I উইন্ডোজস \ মাইক্রোসফট.নেট \ ফ্রেমওয়ার্ক \ v3.5 \ এমএসবিল্ড.এক্সই / টি: রিবিল্ড / পি: কনফিগারেশন = ডিবাগ মাইপ্রজেক্ট.স্লেন ) এলমা.ডেল মাইওয়েবপ্রজেক্ট 1 এর বিন ডিরেক্টরিটিতে অনুপস্থিত - যদিও বিল্ডটিতে নিজেই কোনও সতর্কতা বা ত্রুটি নেই contains

আমি ইতিমধ্যে নিশ্চিত করে দিয়েছি যে মাইবেসপ্রজেক্টের .csproj "সত্য" (ব্যক্তিগত ভিজুয়াল স্টুডিওতে " স্থানীয় স্থানীয় কপির জন্য" একটি নাম থাকতে হবে) সহ ব্যক্তিগত উপাদান রয়েছে :

<Reference Include="Elmah, Version=1.0.11211.0, Culture=neutral, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\mypath\__tools\elmah\Elmah.dll</HintPath>
    **<Private>true</Private>**
</Reference>

(ব্যক্তিগত ট্যাগটি .csproj এর এক্সএমএলটিতে ডিফল্টরূপে উপস্থিত হয় নি, যদিও ভিজ্যুয়াল স্টুডিও "স্থানীয় কপিটি সত্য বলে" বলেছে। আমি "কপি স্থানীয়কে" মিথ্যা - সংরক্ষিত - এ বদলেছি এবং এটি আবার সত্যে রেখেছি - সংরক্ষণ করুন!)

এমএসবিল্ডের কী ভুল? আমি কীভাবে মাইয়েবপ্রজেক্ট 1 এর বিনে অনুলিপি করা (এলাম.এলডিএল) পেতে পারি?

আমি প্রতিটি প্রকল্পের পোস্ট বিল্ড কমান্ডে একটি পোস্ট বিল্ড কপি ক্রিয়া যুক্ত করতে চাই না! (কল্পনা করুন যে আমার অনেক প্রকল্প মাইবেসপ্রজেক্টের উপর নির্ভর করবে!)


11
আমি কেন এমনটি হয় তার একটি পরিষ্কার উত্তর পেতে চাই।
ডেভিড ফাইভ্রে


1
পুরো উত্স কোড নমুনা নিয়ে কোন চূড়ান্ত সমাধান সম্পর্কে কাজ করছে?
কিউইনেট

2
উত্তর দেখার stackoverflow.com/a/21055664/21579 @deadlydog নীচে। আমার পক্ষে দুর্দান্ত ব্যাখ্যা এবং সমস্যাটি সমাধান করা হয়েছে ... নীচে সর্বাধিক ভোট দেওয়া উত্তর ভিএস ২০১২ এর জন্য সঠিক নয়।
জেফ ওয়াইডার 14

উত্তর:


153

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

ব্যাখ্যা

একটি নমুনা দৃশ্যের জন্য ধরা যাক যে আমরা এক্স, অ্যাসেম্বলি এ, এবং এসেম্বলি বি প্রজেক্টে বি রেফারেন্স অ্যাসেম্বলি বি, সুতরাং প্রজেক্ট এক্স এর মধ্যে এ এবং বি উভয়েরই একটি রেফারেন্স অন্তর্ভুক্ত রয়েছে, এছাড়াও প্রকল্প এক্সে কোডটি অন্তর্ভুক্ত রয়েছে যা বিধানসভা A (উদাহরণস্বরূপ এ) উল্লেখ করে includes SomeFunction ())। এখন, আপনি একটি নতুন প্রকল্প ওয়াই তৈরি করেন যা এক্স প্রকল্পের উল্লেখ করে

সুতরাং নির্ভরতা শৃঙ্খলাটি এর মতো দেখাচ্ছে: Y => এক্স => এ => বি

ভিজ্যুয়াল স্টুডিও / এমএসবিল্ড স্মার্ট হওয়ার চেষ্টা করে এবং কেবলমাত্র প্রকল্পের ওয়াইয়ের মধ্যে এমন রেফারেন্স আনবে যা এটি এক্স এক্স দ্বারা প্রয়োজনীয় হিসাবে সনাক্ত করেছে; প্রকল্পের ওয়াইয়ের রেফারেন্স দূষণ এড়াতে এটি এটি করে The এক্স দ্বারা, এবং এইভাবে এটি প্রকল্পের ওয়াইসের বিন ডিরেক্টরিতে অনুলিপি করে না; এটি কেবল এক্স এবং অ্যাসেমব্লিগুলি অনুলিপি করে।

সমাধান

এই সমস্যাটি সমাধান করার জন্য আপনার কাছে দুটি বিকল্প রয়েছে, যার উভয়েরই ফলস্বরূপ বি বিয়ের কপিরাইট ওয়াইয়ের বিন ডিরেক্টরিতে অনুলিপি করা হবে:

  1. প্রকল্পের Y তে বিধানসভা বিতে একটি রেফারেন্স যুক্ত করুন
  2. প্রজেক্ট এক্স-এর এমন একটি ফাইলের সাথে ডামি কোড যুক্ত করুন যা বিধানসভা বি ব্যবহার করে uses

ব্যক্তিগতভাবে আমি কয়েকটি কারণে বিকল্প 2 পছন্দ করি।

  1. যদি আপনি ভবিষ্যতে এক্স প্রকল্পের রেফারেন্সে ভবিষ্যতে অন্য একটি প্রকল্প যুক্ত করেন তবে আপনাকে বিধানসভা বিতে একটি রেফারেন্স অন্তর্ভুক্ত করতে হবে না (যেমন আপনাকে বিকল্প 1 এর সাথে করতে হবে)।
  2. আপনার ডামি কোড কেন থাকা দরকার এবং এটি অপসারণ করা উচিত নয় তা স্পষ্ট করে মন্তব্য করতে পারেন। সুতরাং যদি কেউ দুর্ঘটনাক্রমে কোড মুছে ফেলেন (অব্যবহৃত কোডের সন্ধানকারী একটি রিফ্যাক্টর সরঞ্জাম দিয়ে বলুন), আপনি সহজেই সোর্স নিয়ন্ত্রণ থেকে দেখতে পারেন যে কোডটি প্রয়োজনীয় এবং এটি পুনরুদ্ধার করতে। আপনি যদি বিকল্প 1 ব্যবহার করেন এবং কেউ অব্যবহৃত রেফারেন্সগুলি পরিষ্কার করতে রিফ্যাক্টর সরঞ্জাম ব্যবহার করেন, আপনার কোনও মন্তব্য নেই; আপনি কেবল দেখতে পাবেন যে একটি রেফারেন্স .csproj ফাইল থেকে সরানো হয়েছে।

এই "ডামি কোড" এর একটি নমুনা যা আমি সাধারণত যখন এই পরিস্থিতির মুখোমুখি হই তখন আমি যুক্ত করি।

    // DO NOT DELETE THIS CODE UNLESS WE NO LONGER REQUIRE ASSEMBLY A!!!
    private void DummyFunctionToMakeSureReferencesGetCopiedProperly_DO_NOT_DELETE_THIS_CODE()
    {
        // Assembly A is used by this file, and that assembly depends on assembly B,
        // but this project does not have any code that explicitly references assembly B. Therefore, when another project references
        // this project, this project's assembly and the assembly A get copied to the project's bin directory, but not
        // assembly B. So in order to get the required assembly B copied over, we add some dummy code here (that never
        // gets called) that references assembly B; this will flag VS/MSBuild to copy the required assembly B over as well.
        var dummyType = typeof(B.SomeClass);
        Console.WriteLine(dummyType.FullName);
    }

4
এখানে যা আলোচনা করা হচ্ছে না তা হ'ল কোনও ওয়েব প্রকল্পের বিল / পণ্যগুলিতে বিল্ড পণ্যগুলি অনুলিপি করা এবং টার্গেট আউটপুট ডিরেক্টরিতে (যেমন / বিন / এক্স 86 / ডিবাগ) অনুলিপি করার মধ্যে পার্থক্য রয়েছে। পূর্ববর্তীটি রেফারেন্সড প্রজেক্ট দ্বারা তৈরি করা হয় যখন এটি তৈরি হয় এবং পরবর্তীটি নির্ভর ওয়েব প্রকল্পের মাধ্যমে করা হয়। মাইক্রোসফট.কমন.টারাজেট পরীক্ষা করা এটি বুঝতে সহায়তা করে। ওয়েবে / বিনের অনুলিপিগুলি স্থানীয় কপিরিকে অনুলিপি করার উপর নির্ভর করে না - অনুলিপি স্থানীয় প্রভাবগুলিকে অনুলিপি করে আউটপুট টার্গেট দিরের কাছে অনুলিপি করুন যা ক্যাসিনী ডিবেগের মাধ্যমে চলমান কাঠামোর অংশ নয়।
ব্যবহারকারী 1164178

6
আপনি কী ব্যাখ্যা করতে পারেন যে কেন এটি "ডামি কোড" যুক্ত করে কিন্তু এমএসবিল্ডের সাথে না করে ভিএস-এর সাথে কাজ করেছিল?
toebens

3
কোনও ফাংশন আহ্বানের চেয়ে কম আক্রমণাত্মক, আপনি সমাবেশের অভ্যন্তরে থাকা কোনও শ্রেণীর ধরণটি একটি ডামি ভেরিয়েবলের কাছে নির্ধারণ করতে পারেন। Type dummyType = typeof(AssemblyA.AnyClass);
অ্যারিথমোমানিয়াক

14
উপরোক্ত হিসাবে সমাধান # 2 সমাধানটি কাজ করবে যদি না আপনার ভিজ্যুয়াল স্টুডিওতে 'অনুকূলিতকরণ কোড' সেটিংস না থাকে। সেক্ষেত্রে এটি এখনও dll বাদ দেবে। আমি এর "অপটিমাইজেশন" ওভাররাইড করতে আরও একটি লাইন যুক্ত করেছি। Console.WriteLine(dummyType.FullName);
জেসনজি

3
সমাধান 2 আমার জন্য ভিজ্যুয়াল স্টুডিওতে কাজ করে না I আমি প্রথমে ভেবেছিলাম কারণ এটি ছিল আমার সমাবেশের এক্সে আমি কেবলমাত্র enumবি থেকে একটি ব্যবহার করছিলাম এবং আমি ধরে নিয়েছিলাম এনামটি ইনলাইন করা হচ্ছে। আমি সরাসরি বি থেকে কোনও প্রকারের জন্য কোড যুক্ত করেছি এবং এটি কোনও উপকারে আসেনি। এটি সর্বদা ক্ষেত্রে ছিল যে আমার এক্স এ-তে টাইপগুলি ব্যবহার করে যা বিতে সাবক্লাসের ধরণের হয় তাই সংকলকটি কীভাবে বি দ্বারা এক্স প্রয়োজন হয় না এবং উপেক্ষা করা যায় তা আমি বুঝতে পারি না। এটি বোনারস
জারলি

170

আমি কেবল এটির সাথে এটিই ডিল করি। আপনার রেফারেন্সের বৈশিষ্ট্যগুলিতে যান এবং এটি করুন:

Set "Copy local = false"
Save
Set "Copy local = true"
Save

এবং এটাই.

ভিজ্যুয়াল স্টুডিও 2010 প্রারম্ভিকভাবে রাখে না: <private>True</private> রেফারেন্স ট্যাগে এবং "স্থানীয় স্থানীয় অনুলিপি" সেট করার ফলে এটি ট্যাগ তৈরি করে। এরপরে এটি যথাযথ এবং মিথ্যাতে সেট করে।


10
এটি একটি গডসেন্ড ছিল। এই জন্য আপনাকে ধন্যবাদ!
রেবেকা

22
এমএসবিল্ড 4 / ভিএস2012 নিয়ে আমার পক্ষে কাজ করেনি। এটি হ'ল আমি উল্লেখ করার জন্য রেফারেন্সগুলি আপডেট করতে সক্ষম হয়েছি <Private>true</Private>তবে এমএসবিল্ডের কোনও প্রভাব নেই বলে মনে হয়েছে। শেষ পর্যন্ত, আমি কেবল ডাউনলেভ প্রকল্পগুলিতে নিউগেট রেফারেন্স যুক্ত করেছি।
মাইকেল টেপার

2
আমার পক্ষে কাজ করেনি। এটি এখনও System.Net.Http. বিন ফোল্ডারে ফর্ম্যাট করে না।
আকিরা ইয়ামামোতো

4
এটি সমান Have you tried turning it off and on again?, এবং এটি কাজ করে!
গুয়ানোম

6
দেখে মনে হচ্ছে ভিএস2015 এখনও একই আচরণ করে: 'স্থানীয় অনুলিপি'কে' মিথ্যা 'এ সেট করে আবার ডিফল্ট, ওয়ার্কস-এ' সত্য 'এ ফিরে আসে।
ফ্লিপ করুন

38

আপনি যদি কোডটি সরাসরি কোডে ব্যবহার না করেন তবে ভিজুয়াল স্টুডিও সাহায্যকারী হওয়ার চেষ্টা করে সনাক্ত করে যে এটি ব্যবহৃত হয়নি এবং আউটপুটে এটি অন্তর্ভুক্ত করে না। আপনি কেন ভিজ্যুয়াল স্টুডিও এবং এমএসবিল্ডের মধ্যে ভিন্ন আচরণ দেখছেন তা নিশ্চিত নই। আপনি উভয়ের জন্য ডায়গনিস্টিককে বিল্ড আউটপুট সেট করার চেষ্টা করতে পারেন এবং ফলাফলটি কোথায় ডাইভারেজ হয় তা দেখতে তুলনা করতে পারেন।

আপনার এলমা.ডিল রেফারেন্সের জন্য যদি আপনি এটিকে সরাসরি কোডে উল্লেখ না করেন তবে আপনি এটিকে আপনার প্রকল্পের আইটেম হিসাবে যুক্ত করতে পারেন এবং বিল্ড অ্যাকশনটি Contentএবং আউটপুট ডিরেক্টরিতে অনুলিপি সেট করতে পারেন Always


3
আউটপুট ডিরেক্টরি মন্তব্যে আপনার অনুলিপিটির জন্য +1, যদি এলমা কোডে ব্যবহার করা হচ্ছে না, তবে বিষয়বস্তু হিসাবে অনুলিপি করা বুদ্ধিমান।
কিট রোড

4
প্রকৃতপক্ষে এটি যে সমাবেশগুলিতে ব্যবহৃত হয় না সেগুলি উপেক্ষা করে, তবে একটি প্রধান বিষয় লক্ষ্য রাখবেন, যেমন XAML রিসোর্স ডিকশনারিগুলিতে এসেম্বলি ব্যবহার করে ভিসি দ্বারা অনুমানযোগ্য ব্যবহার হিসাবে বিবেচিত হয় না, সুতরাং এটি অনুলিপি করবে না।
অ্যালেক্স বার্টসেভ


এটি ইউনিট টেস্ট প্রকল্পের জন্য ভাল যেখানে আমার dll দরকার। আমি এমন একটি ডিএল যুক্ত করতে চাই না যে পরীক্ষাগুলি চালানোর জন্য মূল প্রকল্পটির প্রয়োজন হয় না!
লুকোস

14

একবার দেখুন:

এই এমএস বিল্ড ফোরামের থ্রেডটি আমি শুরু করেছি

আপনি আমার অস্থায়ী সমাধান / কার্যকারিতা খুঁজে পাবেন!

(মাইবেসপ্রজেক্টের এমন কিছু কোডের দরকার যা এলমা.ডিল থেকে এলএমএইচএলএল থেকে কিছু শ্রেণি (যা কিছু হোক) রেফারেন্স করছে মাইওয়েবপ্রজেক্ট 1 এর বিনে অনুলিপি করা হচ্ছে!)


1
অভিশাপ - এটিই আমি এসেছি এমন একমাত্র সমাধান - আশা করি এটি করার আরও ভাল উপায় হতে পারে!
নিক্সপুন

2
কম হ্যাকি সমাধানের জন্য নীচে অ্যান্ড্রুয়ের জবাব দেখুন (কোনও অপরাধ নেই!)
এমপিপ্রচার্ড

1
যারা এখন এটি দেখছেন তাদের জন্য, এমএসডিএন- তে টোবেনসের উত্তর মূলত মারাত্মক ডগের উত্তর হিসাবে একই , যা কয়েক বছর পরে সরবরাহ করা হয়েছে।
jpaugh

8

আমারও একই সমস্যা ছিল।

আপনার প্রকল্পের ফ্রেমওয়ার্ক ভার্সনটি আপনি যে রেফারেন্সটিতে রেখেছেন সেটি ডিএল এর ফ্রেমওয়ার্ক ভার্সনের একই কিনা কিনা তা পরীক্ষা করে দেখুন।

আমার ক্ষেত্রে, আমার ক্লায়েন্টটি "ফ্রেমওয়ার্ক 4 ক্লায়েন্ট" ব্যবহার করে সংকলিত হয়েছিল এবং ডিএলএল "ফ্রেমওয়ার্ক 4" তে ছিল।


6

আমি যে সমস্যার মুখোমুখি হয়েছিলাম তা হ'ল আমার একটি প্রকল্প রয়েছে যা একটি লাইব্রেরি প্রকল্পের উপর নির্ভরশীল। নির্মাণের জন্য আমি এই পদক্ষেপগুলি অনুসরণ করছিলাম:

msbuild.exe myproject.vbproj /T:Rebuild
msbuild.exe myproject.vbproj /T:Package

অবশ্যই এর অর্থ আমি আমার লাইব্রেরির dll ফাইলগুলি বিন এবং সবচেয়ে গুরুত্বপূর্ণ প্যাকেজ জিপ ফাইলটিতে অনুপস্থিত ছিল। আমি এই নিখুঁতভাবে কাজ খুঁজে পেয়েছি:

msbuild.exe myproject.vbproj /T:Rebuild;Package

এই কাজটি কেন বা কেন এটি প্রথম স্থানে হয়নি তা আমার কোনও ধারণা নেই। তবে আশা করি এটি সাহায্য করে।


টি / টি ব্যবহার করে আমার পুরো সমস্যাটি তৈরি করার একই সমস্যাটি ছিল: টিমসিটি থেকে এক ধাপে তৈরি করুন পরবর্তী / টিতে: ওয়েবএপিআই প্রকল্পে প্যাকেজ। কোনও প্রকল্পের রেফারেন্স দ্বারা রেফারেন্সযুক্ত কোনও ঘর অন্তর্ভুক্ত ছিল না। এটি উপরের - / টি ব্যবহার করে ঠিক করা হয়েছিল: পুনর্নির্মাণ; ওয়েবএপিআই-তে প্যাকেজটির পরে সেই ঘরের অন্তর্ভুক্ত রয়েছে।
অ্যান্ডি Hoyle

5

আমার ঠিক ঠিক একই সমস্যা ছিল এবং এটি একই সমাধানে 2 টি প্রকল্প তৃতীয় পক্ষের লাইব্রেরির একটি আলাদা সংস্করণ উল্লেখ করে এই কারণে ঘটেছিল।

একবার আমি সমস্ত রেফারেন্স সংশোধন করে সবকিছু ঠিকঠাকভাবে কাজ করে।


4

যেমনটি অ্যালেক্স বার্টসেভ কোনও মন্তব্যে উল্লেখ করেছেন যে এটি কেবলমাত্র এক্সএএমএল রিসোর্স অভিধানে ব্যবহৃত হয়েছে, বা আমার ক্ষেত্রে, কেবলমাত্র এক্সএএমএল-তে ব্যবহৃত এবং পিছনের কোডে নয় এমন কিছু, যা এমএসবাইল দ্বারা 'ব্যবহারে' বলে গণ্য হবে না।

সুতরাং কেবল কোনও কোডের পিছনে বিধানসভাতে কোনও শ্রেণি / উপাদানগুলির সাথে একটি ডামি রেফারেন্স নতুনভাবে তৈরি করা এমএসবাইল্ডকে বোঝাতে পেরেছিল যে সমাবেশটি আসলে আসছিল।


এটি হ'ল আমার সমস্যা এবং সমাধানটি কাজ করেছিল। এটি বের করার চেষ্টা করে খুব দীর্ঘ সময় ব্যয় করেছেন। ধন্যবাদ স্কট এবং @ অ্যালেক্স বার্স্তেভ
করোল

ভাল দুঃখ, এটি আমাকে পাগল করে দিচ্ছিল। হ্যাঁ , আমি ফন্টআউইজ.আর ডাব্লুপিএফ ব্যবহার করছিলাম এবং কেবল এক্সএএমএল-এর মধ্যে থেকেই (স্পষ্ট কারণে)। একটি ডামি পদ্ধতি যুক্ত করা সাহায্য করেছে। ধন্যবাদ! এবং হ্যাঁ, ভিএস 2017 15.6 এখনও প্রভাবিত রয়েছে, তাই আমি একটি বাগ দায়ের করেছি: github.com/dotnet/roslyn/issues/25349
সেরেন কুকলাউ 8:38

3

.NET ফ্রেমওয়ার্ক 4 ক্লায়েন্ট প্রোফাইল থেকে লক্ষ্য কাঠামো পরিবর্তন করা .NET ফ্রেমওয়ার্ক 4 আমার জন্য এই সমস্যা সংশোধন।

সুতরাং আপনার উদাহরণে: MyWebProject1 এ .NET ফ্রেমওয়ার্ক 4 এ লক্ষ্য কাঠামো সেট করুন


3

মারাত্মক ডগের স্কিম ব্যবহার করে,

Y => এক্স => এ => বি ,

আমার সমস্যাটি ছিল যখন আমি ওয়াই তৈরি করেছি, এক্স থেকে আসা এসেম্বলিগুলি (এ এবং বি, সমস্ত 15) ওয়াইয়ের বিন ফোল্ডারে প্রদর্শিত হচ্ছে না।

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


অনেক ঘন্টা অনুসন্ধান এবং অন্যান্য সমাধানগুলির অনেক চেষ্টা করার পরে, এইটি আমার পক্ষে কাজ করেছিল।
সানকাট 2000

2

আমার একই সমস্যা ছিল এবং dll একটি গতিশীল বোঝা রেফারেন্স ছিল। সমস্যা সমাধানের জন্য আমি dll এর নেমস্পেসের সাথে একটি "ব্যবহার" যুক্ত করেছি। এখন dll আউটপুট ফোল্ডারে অনুলিপি করা হয়।


2

এর জন্য একটি যুক্ত করা দরকার .targets আপনার প্রকল্পে ফাইল যুক্ত করা এবং এটির প্রকল্পের অন্তর্ভুক্ত বিভাগে অন্তর্ভুক্ত করার জন্য সেট করা দরকার।

পদ্ধতিটির জন্য আমার উত্তর এখানে দেখুন ।


2

বিল্ডিংয়ের সময় ব্যবহার করা হয় না এমন সমাবেশগুলি উল্লেখ করা সঠিক অনুশীলন নয়। আপনার বিল্ড ফাইলটি বাড়ানো উচিত যাতে এটি অতিরিক্ত ফাইলগুলি অনুলিপি করে। হয় পোস্ট বিল্ড ইভেন্ট ব্যবহার করে বা সম্পত্তি গ্রুপ আপডেট করে ating

কিছু পোস্ট অন্য পোস্টে পাওয়া যাবে


2

আপনি যদি ভিজ্যুয়াল স্টুডিওতে পুরানো "ওয়েব সাইট" প্রকল্পের ধরণটি ব্যবহার করে থাকেন তবে অন্য দৃশ্যে এটি প্রদর্শিত হবে। প্রকল্পের ধরণের জন্য, এটি নিজস্ব ডিরেক্টরি কাঠামোর (বর্তমান ফোল্ডার এবং ডাউন) এর বাইরে থাকা .dlls উল্লেখ করতে অক্ষম। সুতরাং উপরের উত্তরে, আসুন আমাদের ডিরেক্টরি কাঠামোটি দেখতে দেখতে বলে দিন:

এখানে চিত্র বর্ণনা লিখুন

যেখানে প্রজেক্টএক্স এবং প্রজেক্টওয়াই হ'ল পিতা / সন্তানের ডিরেক্টরি এবং প্রজেক্টএক্স রেফারেন্স এ.ডি.এল, যা পরিবর্তে বি.ডি.এল, এবং বি.ডি.এল ডিরেক্টরি কাঠামোর বাইরে রয়েছে, যেমন রুটের (প্যাকেজ) নুগেট প্যাকেজে, তারপরে এ। dll অন্তর্ভুক্ত করা হবে, কিন্তু B.dll না।


0

আমার আজ একই ধরণের সমস্যা ছিল এবং এটি অবশ্যই আপনার প্রশ্নের উত্তর নয়। তবে আমি সবাইকে জানাতে চাই এবং সম্ভবত অন্তর্দৃষ্টি একটি স্পার্ক সরবরাহ করতে চাই।

আমার একটি এএসপি.এনইটি অ্যাপ্লিকেশন রয়েছে। বিল্ড প্রক্রিয়াটি পরিষ্কার এবং তারপরে বিল্ড সেট করা আছে।

আমার দুটি জেনকিনস সিআই আছে স্ক্রিপ্ট রয়েছে। একটি উত্পাদন জন্য এবং মঞ্চ জন্য একটি। আমি আমার অ্যাপ্লিকেশনকে মঞ্চায়িত করেছিলাম এবং সবকিছু ঠিকঠাক কাজ করেছে। উত্পাদনে নিযুক্ত এবং রেফারেন্সযুক্ত একটি ডিএলএল ফাইল অনুপস্থিত। এই ডিএলএল ফাইলটি প্রকল্পের মূলের মধ্যে ছিল। কোনও নিউগেট সংগ্রহস্থলে নেই। ডিএলএল সেট করা হয়েছিলdo not copy

সিআই স্ক্রিপ্ট এবং অ্যাপ্লিকেশন দুটি মোতায়েনের মধ্যে একই ছিল। মঞ্চ পরিবেশে পরিষ্কার এবং স্থাপনার পরেও ডিএসএল ফাইলটি এএসপি.এনইটি অ্যাপ্লিকেশনটির মোতায়েনের জায়গায় প্রতিস্থাপন করা হয়েছিল (bin/ ) । উত্পাদনের পরিবেশের ক্ষেত্রে এটি ছিল না।

এটি একটি পরীক্ষামূলক শাখায় দেখা যাচ্ছে যে আমি এই ডিএলএল ফাইলটি অনুলিপি করতে বিল্ড প্রক্রিয়াটিতে একটি পদক্ষেপ যুক্ত করেছি bin ডিরেক্টরিতে । এখন যে অংশটি বের করতে কিছুটা সময় নিয়েছিল। সিআই প্রক্রিয়া নিজেই পরিষ্কার করছিল না। ডিএলএলটি কার্যনির্বাহী ডিরেক্টরিতে রেখে দেওয়া হয়েছিল এবং দুর্ঘটনাক্রমে এএসপি.নেট .zip ফাইলের সাথে প্যাকেজ করা হয়েছিল। প্রোডাকশন শাখায় কখনই ডিএলএল ফাইলটি একইভাবে অনুলিপি করা হয়নি এবং ঘটনাক্রমে কখনও এটি মোতায়েন করা হয়নি।

TLDR; আপনার বিল্ড সার্ভারটি কি করছে তা আপনি যাচাই করেছেন তা নিশ্চিত করুন make


0

নিশ্চিত হয়ে নিন যে উভয় প্রকল্পই একই। নেট সংস্করণে রয়েছে অনুলিপি স্থানীয় সম্পত্তিও পরীক্ষা করে তবে এটি trueডিফল্ট হিসাবে হওয়া উচিত


0

ভিজ্যুয়াল স্টুডিও 2015 ব্যবহার করে অতিরিক্ত প্যারামিটার যুক্ত করা হচ্ছে

/ Deployonbuild = মিথ্যা

মিসবিল্ড কমান্ড লাইনে সমস্যাটি স্থির করে।


-1

আমি কেবল একটি খুব অনুরূপ ইস্যু মধ্যে দৌড়ে। ভিজ্যুয়াল স্টুডিও 2010 ব্যবহার করে সংকলন করার সময়, ডিএলএল ফাইলটি binফোল্ডারে অন্তর্ভুক্ত করা হয়েছিল । কিন্তু যখন এমএসবিল্ড ব্যবহার করে তৃতীয় পক্ষের ডিএলএল ফাইলটি অন্তর্ভুক্ত করা হয়নি তখন।

খুবই হতাশাজনক. আমি যেভাবে সমাধান করেছি তা হ'ল আমি সরাসরি এটি ব্যবহার না করেও আমার ওয়েব প্রকল্পে প্যাকেজের নুগেট রেফারেন্স অন্তর্ভুক্ত করা ।


এটি শীর্ষ উত্তরের একটি সদৃশ।
জিলস রবার্টস

-3

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

কারণ আপনি যদি কোনও বাস্তবায়ন ডিএলএল ফাইল / প্রকল্পে সরাসরি কোনও রেফারেন্স যুক্ত করেন তবে আপনি ইন্টারফেসের পরিবর্তে বাস্তবায়ন ডিএলএল ফাইল / প্রকল্পের কংক্রিট ক্লাসগুলিতে আপনার বিকাশকারীকে "নতুন" বলা থেকে আটকাতে পারবেন না। এটি প্রয়োগটি ব্যবহার করতে আপনি আপনার ওয়েবসাইটে একটি "হার্ডকোড" বলেছেন।

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