একটি .csproj ফাইলে, <কিছুই অন্তর্ভুক্ত = "…"> কি?


137

কিভাবে

<None Include="C:\foo.bar" />

অন্য রকম

<Content Include="C:\foo.bar" />

?


7
আমি কয়েক Contentগুলি এস পরিবর্তন করা ছিল None। আমার মনে হয় যখন আমি রেজারে রূপান্তরিত করার সময় .scx থেকে .cshtML এ ফাইলগুলির নামকরণ করেছি। এগুলি পুনরায় বদলে আমার কিছু স্থাপনার সমস্যাগুলি ম্যানুয়ালি স্থির করে। আমি খুজে পেয়েছি
ক্রিস

উত্তর:


135

বিল্ড অ্যাকশন সম্পত্তি সম্পর্কিত এমএসডিএন নিবন্ধটি পার্থক্যগুলি ব্যাখ্যা করে।

কিছুই নয় - ফাইলটি প্রকল্পের আউটপুট গ্রুপে অন্তর্ভুক্ত নয় এবং বিল্ড প্রক্রিয়াতে সংকলিত হয় না। একটি উদাহরণ একটি পাঠ্য ফাইল যা ডকুমেন্টেশন রয়েছে যেমন একটি রিডমি ফাইল।

সামগ্রী - ফাইলটি সংকলিত নয়, তবে সামগ্রী আউটপুট গ্রুপে অন্তর্ভুক্ত রয়েছে। উদাহরণস্বরূপ, এই সেটিংটি .htm বা অন্য ধরণের ওয়েব ফাইলের জন্য ডিফল্ট মান।


5
ধন্যবাদ, আমার এই রেফারেন্সটি সনাক্ত করতে সমস্যা হয়েছিল।
এমমেট

সহায়ক, তবে ফাইলটি যদি আউটপুটে অন্তর্ভুক্ত না করা হয় তবে কেন একটি "কিছুই নয়" আইটেম থাকবে? আলোচ্য বিষয়টি কি?
JimH44

1
@ জিমএইচ 44 <কোনও> আইটেমগুলি প্রায়শই আউটপুট ডিরেক্টরিতে ফাইলগুলি অনুলিপি করতে ব্যবহৃত হয়, যদিও তারা ডিফল্টরূপে আউটপুট গ্রুপে না থাকে । আপনি যদি কোনও <কোনও> ফাইলের জন্য "আউটপুট ডিরেক্টরিতে অনুলিপি করুন" -> "সর্বদা অনুলিপি করুন" নির্বাচন করেন তবে এটি অনুলিপি করে দেবে এবং আপনি প্রকল্পের .csproj ফাইলে যুক্ত এন্ট্রিটি <নন> এন্ট্রি পাবেন ফাইলের জন্য।
স্বচ্ছ কম্পাইলার

3
তাহলে "আউটপুট ডিরেক্টরিতে অনুলিপি করুন" -> "সর্বদা অনুলিপি করুন" এবং "আউটপুট ডিরেক্টরিতে অনুলিপি করুন" -> "সর্বদা অনুলিপি করুন" একটি <কনটেন্ট> ফাইলের মধ্যে পার্থক্য কী?
হ্যাশেবল

30

একটি পার্থক্য হ'ল তারা কীভাবে প্রকাশিত হয়; "কিছুই নয়" আইটেমগুলি একটি প্রকাশে অন্তর্ভুক্ত হয় না, "সামগ্রী" আইটেমগুলি করে; উদাহরণস্বরূপ, প্রকাশ ট্যাবে "অ্যাপ্লিকেশন ফাইলগুলি" সংলাপে।


8
সত্য না. কমপক্ষে নতুন ডট নেট ক্লাইমে। যদি আপনার কোনও CopyToOutputDirectoryসেট সেট না দিয়ে কোনও হিসাবে ঘোষিত না হয়truedotnet publish
ডিসক্লোজার

13

আমি ১০০% নিশ্চিত নই (আমি বিল্ড অ্যাকশন সম্পত্তিটির এমএসডিএন বিবরণটি পড়েছি ) তবে এমএসডিএন থেকে স্ট্যাকওভারফ্লোতে সেই উত্তরটি অনুলিপি করা আমার পক্ষে প্রশ্নের পুরোপুরি উত্তর দেয় না।

কিছুই নয় এবং সামগ্রীর পার্থক্য কেবলমাত্র ওয়েব প্রকল্পগুলিতে প্রভাব ফেলে। কমান্ড লাইন প্রকল্পের জন্য, উইনফর্ম প্রকল্প বা ইউনিটটেষ্ট প্রকল্প (আমার ক্ষেত্রে) ইত্যাদি None কোনও কিছুই এবং সামগ্রীর আলাদা আচরণ নেই।

এমএসডিএন: "প্রকল্পের আউটপুট গ্রুপ" বা "সামগ্রী সামগ্রী আউটপুট গ্রুপ" কেবলমাত্র কোনও ওয়েব প্রকল্পে ব্যবহৃত শর্তাদি, তাই না?


2
আপনি যেমন বলছেন, মনে হচ্ছে Noneবনামটি Contentকেবলমাত্র প্রকাশ পদক্ষেপের জন্য কার্যকরভাবে কার্যকর হয়েছে বিল্ড স্টেপ নয়। বিল্ড স্টেপের জন্য মনে CopyToOutputDirectoryহয় উভয়ই সেট করা যেতে পারে এবং যদি বিল্ড স্টেপ দ্বারা ফাইলটি অনুলিপি করা হয় তবে তা নিয়ন্ত্রণ করে। এটিও অদ্ভুত বলে মনে হয় যে ডিফল্টরূপে টি 4 টেম্পলেটগুলি Contentআইটেম হিসাবে নয়, Noneআইটেম হিসাবে যুক্ত হয় ।
ক্রিস্টোফার কিং 22

8

আমার পরিস্থিতিতে, আমার এমএসবিল্ড ফাইলটিতে ItemGroupচিত্রের সংস্থানগুলির জন্য একটি ছিল যা নীচে প্রদর্শিত হয়েছিল:

  <ItemGroup>
    <Content Include="Resources\image001.png" />
    <Content Include="Resources\image002.png" />
    <Content Include="Resources\image003.png" />
    <Content Include="Resources\image004.png" />
    <None Include="Resources\image005.png" />
    <None Include="Resources\image006.png" />
    <None Include="Resources\image007.png" />
  </ItemGroup>

যদিও আমার প্রকল্প জরিমানা তৈরী করছিল আমার হতাশ কেন আমি একটি মিশ্রণ ছিল বাম Contentএবং Noneআমার আইটেম টাইপ উপাদান ItemGroup। এই এমএসডিএন নিবন্ধটি (ভিজ্যুয়াল স্টুডিও ২০১০-এর জন্য) আমাকে যে গাইডেন্সটি খুঁজছিলাম তা দিয়েছে:

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

রেজোলিউশন: এই দিক নির্দেশনা দিয়ে, একটি টেক্সট এডিটর ব্যবহার করে, আমি পরিবর্তন Contentআইটেমের প্রকার উপাদান None

এছাড়াও, এমএস বিল্ড আইটেমগুলির ওভারভিউয়ের জন্য এটি দেখুন এমএসডিএন নিবন্ধটি দেখুন


3

আমার একটি প্রকল্প রয়েছে যাতে কোনও সংকলনযোগ্য আইটেম নেই (এটি জুঁই ইউনিট পরীক্ষার জন্য এইচটিএমএল এবং জাভাস্ক্রিপ্ট সংরক্ষণ করে)।

একদিন আমার সমাধান (এতে প্রজেক্টটি অন্তর্ভুক্ত ছিল) "প্রকল্পে টার্গেট" বিল্ড "উপস্থিত নেই" বলে সংকলন বন্ধ করে দিয়েছিল।

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

<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

আমি তখন থেকে একটি লাইন পরিবর্তন করেছি

<None Include="SpecRunner.html" />

প্রতি

<Content Include="SpecRunner.html" />

এবং এটি বিল্ড সার্ভারেও কাজ করে।


2

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


1

আমার ক্ষেত্রে .PubxML এই ফাইলগুলির মধ্যে একটিও নয় তালিকা। এটি সমাধান নির্মাণের জন্য বা ওয়েব প্রকল্পের জন্য একটি স্ট্যাটিক ফাইল হিসাবে নয়। তবে অ্যাজুরে সাইট প্রকাশ করার জন্য, কনফিগারেশনগুলি এতে উপস্থিত রয়েছে।

মাইক্রোসফ্ট নিবন্ধ অনুসারে এগুলি প্রধান প্রকারগুলি আমরা .csproj ফাইল ট্যাগগুলির মধ্যে দেখতে পাই :

কিছুই নয় - ফাইলটি প্রকল্পের আউটপুট গ্রুপে অন্তর্ভুক্ত নয় এবং বিল্ড প্রক্রিয়াতে সংকলিত হয় না। একটি উদাহরণ একটি পাঠ্য ফাইল যা ডকুমেন্টেশন রয়েছে যেমন একটি রিডমি ফাইল।

সংকলন - ফাইলটি বিল্ড আউটপুটে সংকলিত হয়। এই সেটিংটি কোড ফাইলগুলির জন্য ব্যবহৃত হয়।

সামগ্রী - ফাইলটি সংকলিত নয়, তবে সামগ্রী আউটপুট গ্রুপে অন্তর্ভুক্ত রয়েছে। উদাহরণস্বরূপ, এই সেটিংটি .htm বা অন্য ধরণের ওয়েব ফাইলের জন্য ডিফল্ট মান।

এম্বেডেড রিসোর্স - এই ফাইলটি মূল প্রকল্প বিল্ড আউটপুটকে একটি ডিএলএল বা এক্সিকিউটেবল হিসাবে এম্বেড করা হয়েছে। এটি সাধারণত রিসোর্স ফাইলের জন্য ব্যবহৃত হয়।


1
দয়া করে এখানে মন্তব্য করুন, যদি কিছু বিভ্রান্তিকর হয় বা পরিষ্কার না হয়, কেবল একটি ডাউন ভোট আমাকে এর চেয়ে আরও উন্নত করতে সহায়তা করে না। আগাম ধন্যবাদ.
কৃষ্ণ কাঁথ

1
আমি প্রায়শই ত্রুটি পেয়েছিলাম: "বৈশিষ্ট্যগুলি \ প্রকাশপ্রক্রিয়াগুলি \ ফোল্ডারপ্রফিল.পুবএমএমএল" অন্তর্ভুক্তের জন্য "কিছুই নয়" উপাদানটির নাম "সামগ্রী" হওয়া উচিত। বাঁশের উপরে আমার Asp.NET প্রকল্পে, এবং বিল্ডটি পুনরায় পুনরায় চালু করা ঠিক এটি ঠিক করতে পারে, তাই ঠিক কী সমস্যা তা জানেন না
বোচেন লিন

হাই @ বোচেনলিন, আপনি এখানে যে বিবরণ উল্লেখ করেছেন তা কিছুটা স্বল্প, আপনি এখানে আরও বিশদ দেওয়ার চেষ্টা করতে পারেন বা সম্ভব হলে সম্পূর্ণ ইস্যুর বিবরণ এবং স্ক্রিনশট সহ একটি নতুন প্রশ্ন পোস্ট করতে পারেন [এবং তারপরে প্রশ্নটির লিঙ্কটি এখানে ভাগ করুন]।
কৃষ্ণ কাঁথ

0

সামগ্রী ফাইলগুলি কোনও বিল্ডে অন্তর্ভুক্ত নয়, তবে একটি প্রকাশে অন্তর্ভুক্ত রয়েছে।

কোনও ফাইল কোনও বিল্ড বা প্রকাশের অন্তর্ভুক্ত নয়, যদি না সেগুলি আপনার দ্বারা সেভাবে কনফিগার করা হয়। উদাহরণস্বরূপ, "আউটপুট ডিরেক্টরিতে অনুলিপি করুন" "সর্বদা" বা "আরও নতুন" এর সেটিংস তাদের বিল্ড এবং প্রকাশ উভয়ের অন্তর্ভুক্ত করবে cause

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