এমএসবিল্ড ব্যবহার করে কোনও সমাধানের প্রকল্প ফাইল নির্দিষ্ট করুন


116

আমরা মেশাবিল্ড ব্যবহার করে কোনও সমাধানের একটি বিশেষ প্রকল্প তৈরির জন্য কমান্ডলাইন চাই যেমন আমরা devenv.com.In devenv.com এর সাথে করি আমরা নিম্নলিখিত কমান্ডলাইনটি ব্যবহার করে কোনও সমাধানের একটি প্রকল্প নির্দিষ্ট করতে পারি

devenv.com /Build Release|x86 test.sln /project "testproject"

উপরের কমান্ডলাইনটি ব্যবহার করে আমি টেস্টপ্রসেক্টটি devenv.com ব্যবহার করে test.sln এ বিল্ড করতে পারি the একই সমাধানের জন্য এমএসবিল্ডের কমান্ডলাইনটি কী।

ধন্যবাদ


আপনি কেবল পরীক্ষার প্রকল্পটি এমএসবিল্ডে পাস করছেন না এমন কোনও কারণ?
মার্ক স্মিথ

2
যেহেতু আমি আর আমার মন্তব্য সম্পাদনা করতে পারি না। আমি যা বলতে চাইছি তা হল সমাধানটির পরিবর্তে প্রকল্পটি সরাসরি উল্লেখ করা। "মিসবিল্ড টেস্টপ্রজেক্ট / পি: কনফিগারেশন = রিলিজ / পি: প্ল্যাটফর্ম = x86"
মার্ক স্মিথ

ভিন্ন সময় আমি বিভিন্ন projects.using devenv.com এটা যে সমাধান প্রকল্প নির্দিষ্ট করে সহজ গড়ে তুলতে হবে
tjdoubts

যদি আপনার কেবলমাত্র সমস্যাটি থাকে তবে আপনার প্রয়োজনীয় প্রকল্পগুলি সঠিক সময়ে তৈরি করতে এমএসবিল্ড ব্যবহার করতে সক্ষম হওয়া উচিত। সমাধানের জন্য আপনি ইতিমধ্যে বিভিন্ন সময়ে কার্যকর করার জন্য আপনার কাছে ইতিমধ্যে বিভিন্ন কমান্ড রয়েছে, তবে কেন কেবল বিভিন্ন সময়ে বিভিন্ন প্রকল্পের জন্য বিভিন্ন সময়ে বিভিন্ন প্রকল্পের উল্লেখ করা যায় না? যদি আপনার প্রকল্পগুলি সঠিকভাবে সেট আপ করা হয় তবে তাদের স্লান ফাইলটি ব্যবহার না করেই তাদের সমস্ত উল্লেখ খুঁজে পাওয়া উচিত।
মার্ক স্মিথ

উত্তর:


202
msbuild test.sln /t:project /p:Configuration="Release" /p:Platform="x86" /p:BuildProjectReferences=false

লক্ষ্য করুন যে /tসমাধানে প্রকল্পটির নাম যা নির্ধারিত হয়েছে তা প্রকল্পের ফাইলের নাম থেকে আলাদা হতে পারে।

এছাড়াও, কীভাবে বলা হয়েছে : এমএসবিল্ড.এক্স.ই.এস.কে ব্যবহার করে সমাধানগুলিতে নির্দিষ্ট লক্ষ্যগুলি তৈরি করুন :

প্রকল্পের নাম অক্ষরের কোনো থাকে %, $, @, ;, ., (, ), অথবা ', তাদের একটি প্রতিস্থাপন _নিদিষ্ট লক্ষ্য নামে।

আপনি একবারে একাধিক প্রকল্পও তৈরি করতে পারেন:

msbuild test.sln /t:project;project2 /p:Configuration="Release" /p:Platform="x86" /p:BuildProjectReferences=false

পুনর্নির্মাণ বা পরিষ্কার করতে, এ বা পরিবর্তন /t:projectকরুন/t:project:clean/t:project:rebuild


99
একটি গুরুত্বপূর্ণ নোট: যদি আপনার প্রকল্পের একটি 'থাকে। নামে, আপনি / _ এর সাথে নির্দিষ্ট করার সময় আপনাকে এটিকে '_' দিয়ে প্রতিস্থাপন করতে হবে
ওয়াটুসিমোটো

4
@ ইস্টটন একাধিক প্রকল্প নির্মাণের জন্য, সিন্থ্যাক্সটি ছিল আমার এমএসবিল্ডের /tজন্য প্রতিটি প্রকল্পের জন্য পরামিতি পুনরাবৃত্তি করার জন্য:msbuild test.sln /t:project /t:project2
ফিলিপ

46
এছাড়াও, আপনি যদি কোনও সলিউশন ফোল্ডার ব্যবহার করে থাকেন তবে আপনাকে ফোল্ডারের নাম এবং একটি স্ল্যাশ সহ প্রকল্পের নামটি উপস্থাপন করতে হবে। উপরে উল্লিখিত @ ওয়াটসিমোটোর মতো, যদি আপনার নামে পিরিয়ড (।) থাকে তবে আপনাকে সেগুলি আন্ডারস্কোর (_) দিয়ে প্রতিস্থাপন করতে হবে। আমি ভালো কিছু সঙ্গে শেষ পর্যন্ত: /t:SlnFolder\My_Project_name
ট্র্যাভিস পার্কগুলি

28
@ ট্র্যাভিসপার্কস: এছাড়াও উল্লেখ করা দরকার যে "সমাধান ফোল্ডার" কোনও ফাইল সিস্টেম ফোল্ডারকে বোঝায় না বরং সমাধান এক্সপ্লোরার ভিউতে একটি ফোল্ডারকে বোঝায়।
joshbodily

4
ফোল্ডার নাম (জিওয়াইপি উত্পন্ন প্রকল্পসমূহ) এর সাথে আমাকে '(' এবং ')' প্রতিস্থাপন করতে হয়েছিল। আমি অনুমান করি এটি সমস্ত বিশেষ অক্ষরকে আন্ডারস্কোর দ্বারা প্রতিস্থাপন করা হয়েছে।
ম্যাক্সিমাম ভাইবার্গস

15

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

"msbuild testproject /p:Configuration=Release /p:Platform=x86"

আমি জানি যে একটি বড় সমস্যা রয়েছে আপনি সমস্যার সমাধানের পরিবর্তে সরাসরি প্রকল্পটি ব্যবহার করতে পারেন: আপনি যদি প্রকল্পটির মধ্যে উল্লেখগুলি যুক্ত করার পরিবর্তে এবং বিল্ড সিস্টেমটিকে স্বয়ংক্রিয়ভাবে নির্ভরতা তৈরি করতে দেয়, তবে প্রকল্পগুলির মধ্যে নির্ভরতা প্রকাশ করার জন্য যদি আপনি সমাধানটি ব্যবহার করেন if ।

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


4
প্রোজ ফাইলগুলি থেকে বিল্ড অর্ডার কীভাবে প্রয়োগ করা যেতে পারে দয়া করে তা নির্দেশ করুন। ধন্যবাদ।
ProgramCpp

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

@ প্রোগ্রামগ্রামসিপি যখন আপনি একটি প্রকল্প থেকে অন্য প্রকল্পে রেফারেন্স যুক্ত করেন, এটি স্বয়ংক্রিয়ভাবে নির্ধারণ করে যে রেফারেন্সড প্রকল্পটি প্রথমে তৈরি করা দরকার।
jpaugh

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

আপনি যদি প্রকল্প কনফিগারেশনে সমাধান ভেরিয়েবলগুলি ব্যবহার করেন তবে appear (সমাধানডির)
অ্যালেক্স চে

8

ভবিষ্যতের সন্ধানকারীদের কাছে তথ্য হিসাবে পোস্ট করা

নিম্নলিখিতটি বিল্ড স্ক্রিপ্টে যুক্ত করুন এবং এটি একবার চালান। এটি ম্যাসবিল্ড প্রকৃতপক্ষে ব্যবহার করবে সঠিক টার্গেট এবং অন্যান্য তথ্য উত্পন্ন করবে।

.উদাহরণস্বরূপ : আপনি যদি প্রকল্পের নাম বা ফোল্ডারগুলিতে থাকেন তবে এমএসবিল্ড _এর স্থানে প্রত্যাশা করবে .

set MSBuildEmitSolution=1

তথ্য পাওয়ার পরে প্রয়োজনীয় বিবরণ সহ বিল্ড স্ক্রিপ্ট আপডেট করুন।


6
You যদি আপনার থাকে ''। প্রকল্পের নাম বা ফোল্ডারগুলিতে মিসবিল্ড '_' এর জায়গায় '_' প্রত্যাশা করবে `
dhcgn

2

এটি করার জন্য, আপনাকে প্রকল্পের লক্ষ্য-নামটি কী তা জানা দরকার, প্রয়োজনীয়ভাবে প্রকল্পের নাম নয়।

এটির সন্ধান করার একটি উপায় হ'ল MSBuildEmitSolutionমানকে ডাকা একটি বিশেষ পরিবেশের পরিবর্তনশীল সেট করার পরে উদ্দেশ্যে এসএলএন এর বিপরীতে এমএসবিল্ড ব্যবহার করা 1

set MSBuildEmitSolution=1
msbuild my_stuff.sln /t:rebuild /p:Configuration=Release /p:Platform=x64

নেস্টেড ডিরেক্টরিতে লক্ষ্যমাত্রার জন্য খুব নির্দিষ্ট নামের কারণে আমাকে সম্প্রতি এটি করতে হয়েছিল। সুতরাং আমার উত্পন্ন ফাইল থেকে, my_stuff.sln.metaprojআমি এই লাইনটি পেয়েছি:

<Target Name="Utils\Firewall\FirewallUtils:Rebuild">

এর অর্থ হ'ল কমান্ড-লাইনটি ব্যবহার করার সমাপ্তি ঘটে,

msbuild my_stuff.sln /t:Utils\Firewall\FirewallUtils:Rebuild /p:Configuration=Release /p:Platform=x64

2
এটি আমার প্রয়োজন ছিল। ইঙ্গিত যদি আপনি এটি চালাতে না চান: আপনার লক্ষ্য হ'ল বর্তমান প্রকল্প থেকে আপনার প্রকল্পের ফাইলের ফোল্ডার কাঠামো, প্রকল্প ফাইলের এক্সটেনশনটি বিয়োগ ( .csprojআমার ক্ষেত্রে)। আমি <3 এসও!
কোনও রিফান্ড নেই কোনও রিটার্নস নেই

1

কেবলমাত্র অতিরিক্ত তথ্য যুক্ত করার জন্য, প্রকল্প ফোল্ডারে এমএসবিল্ড কার্যকর করে ডিফল্টরূপে প্রকল্পের ফাইলটি কেবল সেখানে তৈরি করা হবে।

>msbuild

এমসবিল্ডটি এভাবে ব্যবহারের বিভিন্ন প্রকারভেদ রয়েছে। আপনি সরাসরি প্রজ ফাইলটি নির্দিষ্ট করতে পারেন।

>msbuild helloworld.csproj -t:Build.

ব্যবহারের জন্য এমএসবিল্ড ডকুমেন্টেশন, প্রোজ ফাইলের প্রয়োজনীয়তা এবং সমাধানের পরিবর্তে প্রকল্পটি তৈরির সুবিধাগুলি পর্যালোচনা করুন।

এমএস এমএসবিল্ড ডকুমেন্টেশন

উপরের চিহ্ন-স্মিথ দ্বারা উল্লিখিতভাবে এইভাবে বাড়ানোর সুবিধা রয়েছে।

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