পোস্ট বিল্ড ইভেন্ট থেকে ফাইলগুলি অন্তর্ভুক্ত করতে কীভাবে ভিজ্যুয়াল স্টুডিও 'প্রকাশ' কার্যকারিতা পাবেন?


90

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

আমি একটি 32 বিট পরিবেশে বিকাশ করি তবে একটি bit৪ বিট পরিবেশের জন্য একটি রিলিজ প্যাকেজ তৈরি করতে হবে, সুতরাং 'রিলিজ' কনফিগারেশনে আমার একটি পোস্ট বিল্ড ইভেন্ট রয়েছে যা একটি তৃতীয় পক্ষের ডিএল এর bit৪ বিট সংস্করণ অনুলিপি করে directory২ বিট সংস্করণে ওভাররাইট করে । আমি যখন 'প্রকাশনা' কার্যকারিতাটি ব্যবহার করি, যদিও সঠিক 64৪ বিট ডেল ডিএন ডিরেক্টরিতে অনুলিপি করা হচ্ছে, এটি প্যাকেজে অন্তর্ভুক্ত হয় না।

পোস্ট বিল্ড ইভেন্টের সময় বিন ডিরেক্টরিতে অনুলিপি করা ফাইলগুলিকে অন্তর্ভুক্ত করার জন্য 'প্রকাশ' পাওয়ার কী উপায় আছে?


4
আপনি যদি এর পরিবর্তে প্রাক- বিল্ড ইভেন্ট ব্যবহার করেন তবে এটি ইতিমধ্যে আপনার পছন্দ মতো কাজ করবে বলে মনে হচ্ছে (ভিজ্যুয়াল স্টুডিও 2013, এএসপি.নেট প্রকল্প টেম্পলেট)।
bzlm

তারা ভিজ্যুয়াল স্টুডিও 2015 এবং তারপরে উপরের মন্তব্যে উল্লিখিত পূর্ব-নির্মিত আচরণ সরিয়ে ফেলেছে বলে মনে হয়।
justdan23

উত্তর:


92

আমি ভিএস 2010 ওয়েব ডিপ্লোয়মেন্ট প্যাকেজ ব্যবহার করে অতিরিক্ত ফাইলগুলি কীভাবে অন্তর্ভুক্ত করব তাতে আমি একটি অনুরূপ তবে ভিন্ন প্রশ্নের উত্তর দিয়েছি ?

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


থেকে: কীভাবে আপনি ভিএস 2010 ওয়েব ডিপ্লোয়মেন্ট প্যাকেজ ব্যবহার করে অতিরিক্ত ফাইলগুলি অন্তর্ভুক্ত করবেন?


দুর্দান্ত প্রশ্ন। আমি এই সম্পর্কে ওয়েব ডিপ্লোমেন্ট সরঞ্জামে (এমএসডিপপ্লয়) একটি খুব বিস্তারিত ব্লগ এন্ট্রি পোস্ট করেছি : অতিরিক্ত ফাইল বা নির্দিষ্ট ফাইলগুলি বাদ দিয়ে প্যাকেজ তৈরি করুন

এখানে সংক্ষিপ্তসার। ফাইলগুলি অন্তর্ভুক্ত করার পরে, আমি কীভাবে ফাইলগুলিও বাদ দিতে পারি তা দেখাই।

অতিরিক্ত ফাইল সহ

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

<PropertyGroup>
  <CopyAllFilesToSingleFolderForPackageDependsOn>
    CustomCollectFiles;
    $(CopyAllFilesToSingleFolderForPackageDependsOn);
  </CopyAllFilesToSingleFolderForPackageDependsOn>
</PropertyGroup>

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

<Target Name="CustomCollectFiles">
  <ItemGroup>
    <_CustomFiles Include="..\Extra Files\**\*" />

    <FilesForPackagingFromProject  Include="%(_CustomFiles.Identity)">
      <DestinationRelativePath>Extra Files\%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
    </FilesForPackagingFromProject>
  </ItemGroup>
</Target>

এখানে আমি যা করেছি তা _CustomFiles আইটেমটি তৈরি করা হয়েছিল এবং অন্তর্ভুক্ত বৈশিষ্ট্যে এটি ফোল্ডারে থাকা সমস্ত ফাইল এবং এর নীচে যে কোনও ফোল্ডার তুলতে বলেছিল। তারপরে আমি এই আইটেমটি ফাইলফোরপ্যাকেজিংফ্রমপ্রজেক্ট আইটেমটি পপুলেট করতে ব্যবহার করি। এটি MSDeploy আসলে অতিরিক্ত ফাইল যুক্ত করতে ব্যবহার করে item এছাড়াও লক্ষ্য করুন যে আমি মেটাটাটা ডেস্টিনেশন রিলেটিভপথ মান ঘোষণা করেছিলাম। এটি প্যাকেজের মধ্যে যে আপেক্ষিক পথটি স্থাপন করবে তা নির্ধারণ করবে। আমি এখানে অতিরিক্ত ফাইল% (রিক্রুসিভডির)% (ফাইলের নাম)% (এক্সটেনশন) বিবৃতিটি ব্যবহার করেছি। এটি যা বলছে তা হ'ল এটি অতিরিক্ত ফাইল ফোল্ডারের অধীনে প্যাকেজে একই আপেক্ষিক স্থানে স্থাপন করা।

ফাইল বাদে

আপনি যদি নীচের দিকে ভিএস ২০১০ দিয়ে তৈরি ওয়েব অ্যাপ্লিকেশনটির প্রকল্প ফাইলটি খুলেন তবে এর সাথে একটি লাইন পাবেন।

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />

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

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

<ItemGroup>
  <ExcludeFromPackageFiles Include="Sample.Debug.xml">
    <FromTarget>Project</FromTarget>
  </ExcludeFromPackageFiles>
</ItemGroup>

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


8
@ সায়েদ, এটি ভিএস ২০১২ এর জন্য কাজ করে বলে মনে হচ্ছে না, আপনি কী জানেন কীভাবে এই দৃশ্যের জন্য আপডেট করা যায়। v11.0 এ পরিবর্তন করা কার্যকর হয় না। টিআইএ
সাইমন ফ্রান্সেস্কো

4
আক্ষরিকভাবে এই স্টাফ সম্পর্কে কোথাও কোনও ডকুমেন্টেশন নেই। মাইক্রোসফ্ট ডকুমেন্টেশন আপনার ব্লগগুলি উল্লেখ করে।
ম্যাথু জেমস ডেভিস

4
@ ড্যানিয়েল আপনার যদি কেবল একটি নির্দিষ্ট ফোল্ডার প্রয়োজন তবে একটি ফোল্ডার নয়, কেবল *** এর সাথে পুনরাবৃত্তি যুক্ত করার পরিবর্তে সেই নির্দিষ্ট ফাইলগুলিকে অন্তর্ভুক্ত করার জন্য _ কাস্টমফিলগুলি পরিবর্তন করুন। সুতরাং <_CustomFiles অন্তর্ভুক্ত = ".. end নির্ভরতা \ FileA.dll" /> <_ কাস্টম ফাইলগুলি অন্তর্ভুক্ত করুন = "সি: \ সোথেরপ্লেস \ FileB.txt" /> এর মতো কিছু।
বুর্বারস

4
@ সিমোনফ্রান্সেসকো আমি এটিও অভিজ্ঞতা পেয়েছি এবং উপরের উত্তরে লিখিতভাবে <কপিআলফিলারটসসিংলফোল্ডারফোর্ডসডেপ্লয়ডাইপেন্ডসঅন.এর পরিবর্তে প্রয়োজনীয় পরিবর্তনটি প্রসারিত করা হয়েছে বলে মনে হচ্ছে।
বুড়ো


13

আমি ExcludeFilesFromDeploymentপ্রকল্পের ফাইলের মধ্যে উপাদানটি ব্যবহার করে সমস্যার সন্ধান পেয়েছি । আমি ওয়েব ডিপ্লোয়মেন্ট থেকে ধারণা পেয়েছি : ফাইল এবং ফোল্ডারগুলি বাদ দিয়ে

সুতরাং আপনার যদি একটি সফল বিল্ড এবং সম্পর্কিত পোস্ট বিল্ড পদক্ষেপের পরে আপনার প্রকল্প ডিরেক্টরিতে আপনার প্রকল্পের ফাইলগুলি প্যাকেজ করতে হয় তবে নিম্নলিখিতগুলি করুন।

  1. "প্যাকেজ / প্রকাশ ওয়েব" প্রকল্পের সেটিংস সম্পাদনা করুন এবং
    "এই প্রকল্পের ফোল্ডারের সমস্ত ফাইল" হতে স্থাপনের জন্য আইটেমগুলি নির্বাচন করুন
  2. প্রকল্পটি আনলোড করুন
  3. আনলোড হওয়া প্রকল্পে ডান ক্লিক করুন এবং প্রকল্প কনফিগারেশন সম্পাদনা করতে নির্বাচন করুন
  4. নির্ণয় করুন PropertyGroupকনফিগারেশন সেটিং যেমন "রিলিজ" থেকে যুক্ত উপাদান
  5. মধ্যে PropertyGroupনিম্নলিখিত উপাদানের মধ্যে উপাদান যোগ করুন এবং ফাইল এবং ফোল্ডার অগ্রাহ্য আপনি প্যাকেজের মধ্যে চাই না

    <ExcludeFilesFromDeployment>*.cs;**\.svn\**\*.*;Web.*.config;*.csproj*</ExcludeFilesFromDeployment>
    <ExcludeFoldersFromDeployment>.svn;Controllers;BootstrapperTasks;Properties</ExcludeFoldersFromDeployment>
    
  6. আপনার প্রকল্পটি সংরক্ষণ করুন এবং পুনরায় লোড করুন

এটি আপাতত আমার সমস্যা সমাধান করে তবে এর চেয়ে আরও ভাল সমাধান যদি আসে তবে দয়া করে আমাকে জানান, হ্যাকারি জড়িত থাকার কারণে এটি আদর্শ নয়, তবে আবার সম্ভবত এটি কোনও অস্বাভাবিক স্থাপনার দৃশ্য?


6

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


4
ঠিক আছে, তবে অতিরিক্ত হিসাবে আপনাকে "নতুন হলে অনুলিপি করুন" বা "সর্বদা অনুলিপি করুন" নির্বাচন করতে হবে, অন্যথায় "সামগ্রী" নির্বাচন করা হলেও ডিফল্ট ক্রিয়াটি "অনুলিপি করবেন না" is
ম্যাট

4
অতিরিক্ত পদক্ষেপের জন্য ম্যাট সহ একমত
গেমস

7
ফোল্ডারগুলির জন্য কোনও বিল্ড অ্যাকশন বিদ্যমান নেই (VS2013)
ক্রিশ্চিয়ান ই।

copytooutputdirectory = সর্বদা অনুলিপি করুন
গোমেস

এমনকি সর্বদা অনুলিপি ছাড়াই কাজ করেছেন।
টেঙ্গিজ

3

আমি এটি একটি পুরানো প্রশ্ন জানি কিন্তু এগুলির কোনওোটাই আমার পক্ষে কাজ করেনি।

2017 ভিএস-এ আমি প্রকাশিত হতে অতিরিক্ত ফোল্ডারে ডান ক্লিক করেছি এবং এটি কাজ করে প্রকাশিত নির্বাচন করুন।

উদাহরণ:

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


যদিও এটি একটি ছোট অতিরিক্ত পদক্ষেপ এটি খুব সহজ।
Ciaran গ্যালাগার

0

প্রকল্পে বিন ফোল্ডার (এবং এটির বিষয়বস্তু) যুক্ত করার ফলে ফাইলগুলি প্রকাশনা আউটপুট ডিরেক্টরিতে অনুলিপি করা হয়েছিল।

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

এটি ভিজ্যুয়াল স্টুডিও 2015 পেশাদার ব্যবহার করছিল


0

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

আপনার প্রকাশনায় অতিরিক্ত ফাইল অন্তর্ভুক্ত সম্পর্কে প্রায় সমস্ত নিবন্ধগুলিতে আইটেমগুলি CopyAllFilesToSingleFolderForPackageDependsOnবা CopyAllFilesToSingleFolderForMSDeployDependsOnআইটেমগুলি যুক্ত করার এই পদ্ধতিটি ব্যবহার করে PropertyGroupএবং এগুলি সমস্ত কিছু "ফাইলটির শেষে আমি এটিকে যুক্ত করেছি ..."

আমি এটি করেছি এবং একটি বিকেল কাটিয়েছি কেন কেন কিছুই হচ্ছে না তা আবিষ্কার করার আগেই PropertyGroupফাইলের শীর্ষে একটি বিভাগ ইতিমধ্যে উপস্থিত ছিলাম । আমি যখন CopyAllFilesToSingleFolderForPackageDependsOnsection বিভাগে রাখি তখন এটি ঠিকঠাক কাজ করেছিল।

আশা করি এটি কারও কোনও দিন সময় সাশ্রয় করবে

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