VS2010 (তবে কেবলমাত্র পূর্ববর্তী নির্মাণের পরে) থেকে প্রকাশের সময় অনুমতিপ্রযুক্তি = 'মেশিনটোইপ্লিকেশন' ত্রুটি


103

আমি আমার স্থানীয় কম্পিউটারে কোনও সমস্যা ছাড়াই আমার Asp.Net MVC 2 অ্যাপ্লিকেশনটি চালাতে পারি। জাস্ট রান / ডিবাগ।

তবে আমি যদি এটি ইতিমধ্যে তৈরি করে ফেলেছি তবে আমি এটি প্রকাশ করতে পারি না! সমাধানটি পরিষ্কার করে আবার প্রকাশ করতে হবে। আমি জানি এটি সিস্টেম সমালোচনা নয়, তবে এটি সত্যই বিরক্তিকর। "ওয়ান ক্লিক পাবলিশ" "ক্লিন সলিউশন এবং তারপরে ওয়ান ক্লিক প্রকাশ করুন" নয়

সঠিক ত্রুটিটি নিম্নরূপ:

ত্রুটি 11 অ্যাপ্লিকেশন স্তরের বাইরে অনুমতি-ডেফিনিশন = 'মেশিনটো অ্যাপ্লিকেশন' হিসাবে নিবন্ধিত বিভাগটি ব্যবহার করা একটি ত্রুটি। এই ত্রুটিটি ভার্চুয়াল ডিরেক্টরিটি আইআইএসে অ্যাপ্লিকেশন হিসাবে কনফিগার না করার কারণে ঘটতে পারে।

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


1
চাইল্ড ডিরেক্টরিতে যদি কোনও অতিরিক্ত ওয়েব কোডফিগ থাকে তবে এটি সরিয়ে দেওয়ার চেষ্টা করুন।
ব্যবহারকারী 1154664

উত্তর:


76

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

ভাগ্যক্রমে আমি একটি পোস্ট এসেছি যা আমাকে উত্তর দিয়েছে gave এমভিসিবায়েলভিউগুলি সত্য হিসাবে রাখুন , তারপরে আপনি আপনার প্রকল্পের ফাইলে নীচের লাইনটি যুক্ত করতে পারেন:

<BaseIntermediateOutputPath>[SomeKnownLocationIHaveAccessTo]</BaseIntermediateOutputPath>

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

FWIW, MS এই ত্রুটি সম্পর্কে জানুন ...


1
ফিলি হ্যাকের এই ইস্যুতে একটি আপডেট রয়েছে, যা 2010 এসপি 1 বনাম চলে: হ্যাকড
২০১/201

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

9
আমি মনে করি আপত্তি ফোল্ডারটি মোছা একটি সহজ সমাধান এবং প্রকল্প ফাইলের পরিবর্তনগুলি সম্পর্কে মনে রাখা / বজায় রাখা কম। মনে হয় এটি এখানে শীর্ষ উত্তর হওয়া উচিত। (২০১১ সালের মাঝামাঝি)
রায়ানডাব্লু

এফডাব্লুআইডাব্লু, এই এন্ট্রিটি প্রকাশের জন্য মাঝারি আউটপুট পাথটি পরিবর্তিত করে ( \objপাথ), এমভিসিবায়েলভিউগুলি নয়। পার্থক্যটি সূক্ষ্ম, তবে তাৎপর্যপূর্ণ।
নিউম্যান্থ

40

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

<MvcBuildViews>true</MvcBuildViews>

আমার প্রকল্পের ফাইলের বিকল্প (যা টি 4 এমভিসি টি 4 টেম্পলেটটির সাথে কাজে আসে)।

সম্পাদনা করুন: "বিল্ড" -> "পুনর্নির্মাণ সমাধান" মেনুটি ব্যবহার করে এটি আরও সহজ অর্জন করা যায় (কারণ যা পুনর্নির্মাণ বাস্তবে যা ঘটে তা আপত্তি / ডিবাগ ফোল্ডারটি সাফ করে এবং তারপরে সমাধান তৈরি করে)।


26

আমি এই ত্রুটির জন্য এমএস কানেক্ট পৃষ্ঠায় এই কাজটি ব্যবহার করছি । এটি AspNetCompiler চালানোর আগে আপনার প্রকল্পের (সমস্ত কনফিগারেশন) অধীনে সমস্ত আপত্তি এবং টেম্প ফাইলগুলি সাফ করে।

আপনার প্রজেক্ট ফাইলে এমভিসিবিল্ডভিউ লক্ষ্যগুলি সংশোধন করুন যাতে এটি ভিজুয়াল স্টুডিওর তৈরি প্যাকেজিং ফাইলগুলি পরিষ্কার করার লক্ষ্যগুলির উপর নির্ভর করে। এই লক্ষ্যগুলি স্বয়ংক্রিয়ভাবে ওয়েব অ্যাপ্লিকেশন প্রকল্পগুলিতে অন্তর্ভুক্ত।

সমস্ত প্যাকেজিং ফাইলগুলি প্রতিবারই এমভিসিবিল্ডভিউ লক্ষ্যবস্তু কার্যকর করে মুছে ফেলা হবে।

<Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'" DependsOnTargets="CleanWebsitesPackage;CleanWebsitesPackageTempDir;CleanWebsitesTransformParametersFiles;">
    <AspNetCompiler VirtualPath="temp" PhysicalPath="$(MSBuildProjectDirectory)" />
</Target>

আমার জন্য কাজ কর. আমি নীচের লক্ষ্যে কাজ করার জন্য মন্তব্যও করেছি: <টার্গেটের নাম = "আফটার বিল্ড" কন্ডিশন = "'$ (এমভিসি বিল্ডভিউস)' == 'সত্য'"> <এসপনেটকম্পিলার ভার্চুয়ালপথ = "টেম্পল" ফিজিক্যালপ্যাথ = "$ (প্রজেক্টডির)" /> < / টার্গেট>
ক্যাপ্টান

আপডেট - এমভিসি 3 সরঞ্জাম আপডেটের এটি ঠিক করা উচিত। haacked.com/archive/2011/05/09/…
jrummell

3
হ্যাঁ ... rmdir /S /Q "$(ProjectDir)\obj"মাইক্রোসফ্ট টিকিট অনুযায়ী পোস্ট বিল্ড বিভাগে যুক্ত করে সমস্যার সমাধান!
লেনিয়েল ম্যাকাফেরি

২০১২ সালে, ক্লিনওয়েবসাইটসপ্যাকেজটিপিমিডির এবং ক্লিনওয়েবসাইটস ট্রান্সফর্মপ্যারামিটারস ফাইলগুলি বিদ্যমান নেই এবং তবুও ত্রুটিটি পেয়েছে।
ডেভ

2
@ জড়ুমেল আকর্ষণীয়, আমার এমভিসি 4 প্রকল্পে বিল্ড ভিউগুলি সক্ষম করার সময় আমি এই মেশিনটো অ্যাপ্লিকেশন ত্রুটিটি পাচ্ছি, ভেবেছিল এটি কোনওভাবে সম্পর্কিত।
ডেভ

24

এই সমস্যাটি তখনই ঘটে যখন প্রজেক্ট ফোল্ডারে ওয়েব প্রকল্পের আউটপুট (টেম্প্লেটেড ওয়েব কোডজিগ বা অস্থায়ী প্রকাশের ফাইলগুলি) থাকে। ব্যবহৃত এএসপি.এনইটি সংকলকটি Obj ফোল্ডারে থাকা জিনিসগুলিকে উপেক্ষা করার মতো স্মার্ট নয়, সুতরাং এটি পরিবর্তে ত্রুটি ছুঁড়ে ফেলে।

আর একটি সমাধান হ'ল <এস্পনেটকম্পিলার> কল করার আগে প্রকাশিত আউটপুটকে ডুবিয়ে দেওয়া। আপনার .csproj খুলুন এবং এটি পরিবর্তন করুন:

<Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
  <AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
</Target>

এটি:

<Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
  <ItemGroup>
    <ExtraWebConfigs Include="$(BaseIntermediateOutputPath)\**\web.config" />
    <ExtraPackageTmp Include="$([System.IO.Directory]::GetDirectories(&quot;$(BaseIntermediateOutputPath)&quot;, &quot;PackageTmp&quot;, System.IO.SearchOption.AllDirectories))" />
  </ItemGroup>
  <Delete Files="@(ExtraWebConfigs)" />
  <RemoveDir Directories="@(ExtraPackageTmp)" />
  <AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
</Target>

এটি webজেজ এর অধীনে সমস্ত ওয়েবকনফিগগুলি এবং সেই সাথে সমস্ত প্যাকেজটম্প ফোল্ডারগুলি মুছে ফেলবে।


আমার সমস্ত উপায়ে প্লাস করুন। objফোল্ডারে আমার কিছু ডিটারিটাস ছিল ।
ta.speot.is

সম্পাদক অভিযোগ করেছেন যে এর অভ্যন্তরের উপাদানগুলি <ItemGroup>অবৈধ, তবে এটিকে উপেক্ষা করুন - এটি যেভাবেই কাজ করে।
কেজেল রিলবে

দুর্দান্ত কাজ করেছে এবং প্রতিবারই আমি আমার কনফিগারটিকে ডিবাগ থেকে ছেড়ে দিতে মুক্তি দিতে চাইলে ওজেজ ফোল্ডারটি মুছে ফেলার মাথা ব্যথা থেকে বাঁচায়
টড স্কেলটন

4

আপনি যদি ওয়েব প্রকাশনা ব্যবহার করে থাকেন তবে আপনি সেট করতে পারেন MvcBuildViews=falseএবং PrecompileBeforePublish=trueযা অস্থায়ী ফোল্ডারে অনুলিপি করার পরে (প্রকাশের / প্যাকেজটির তাত্ক্ষণিক আগে) পূর্ববর্তী হয়।

দ্রষ্টব্য: PrecompileBeforePublishকেবলমাত্র "নতুন" ওয়েব প্রকাশনা পাইপলাইন স্ট্যাক (ভিএস 2010 এসপি 1 + অ্যাজুরি এসডিকে বা ভিএস ২০১২ আরটিএম) দ্বারা সমর্থিত। আপনি যদি ভিএস 2010 আরটিএম ব্যবহার করছেন তবে আপনাকে বিকল্প পদ্ধতির একটি ব্যবহার করতে হবে।


আমি এই সমাধানটি দেখছি না দেখছি। আমি উদ্দেশ্যমূলকভাবে আমার দৃষ্টিতে একটি ত্রুটি রেখেছি এবং প্রাকম্পাইলবাইফরপব্লিশ = সত্য সেট করেছি এবং এটি বিল্ডটি ব্যর্থ হয়নি। (আমি ভিএস2012 ব্যবহার করছি)
হুল্লা

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

3

জড়মেল, সেটিংস দ্বারা সমাধানটি সম্পর্কে:

DependsOnTargets="CleanWebsitesPackage;CleanWebsitesPackageTempDir;CleanWebsitesTransformParametersFiles;"

এটি ভিএস ২০১০ সালে কাজ করে তবে ভিএস ২০১২ তে নয় । ২০১২ সালে আপনাকে এইটি লিখতে হবে:

DependsOnTargets="CleanWebsitesPackage;CleanWebsitesWPPAllFilesInSingleFolder;CleanWebPublishPipelineIntermediateOutput"

উৎস:

ভিএস ২০১০: সি: \ প্রোগ্রাম ফাইলগুলি (x86) \ এমএসবিল্ড \ মাইক্রোসফ্ট \ ভিজ্যুয়ালস্টুডিও \ v10.0 \ ওয়েব \ মাইক্রোসফ্ট.ওয়েব.প্রকাশ

ভিএস 2012: সি: \ প্রোগ্রাম ফাইলগুলি (x86) \ এমএসবিল্ড \ মাইক্রোসফ্ট \ ভিজ্যুয়ালস্টুডিও \ v11.0 \ ওয়েব \ মাইক্রোসফ্ট.ওয়েব.প্রকাশ


3

আমি জানি এটির উত্তর দেওয়া হয়েছে তবে আমি খুঁজে পাওয়া আকর্ষণীয় কিছু যুক্ত করতে চাই।

আমি প্রকল্পের "এমভিসি বিল্ডভিউস" কে মিথ্যা হিসাবে সেট করেছিলাম, সমস্ত বিন এবং আপত্তি ফোল্ডার মুছে ফেলেছি এবং তবুও আমি ত্রুটি পেয়ে যাচ্ছি। আমি দেখতে পেলাম যে একটি ".csproj.user" ফাইল রয়েছে যা এখনও "এমভিসিবিল্ডভিউস" সত্য হিসাবে সেট করা আছে।

আমি ".csproj.user" ফাইলটি মুছলাম এবং তারপরে এটি সমস্ত কাজ করেছে।

সুতরাং আপনি যদি আপনার সিএসপ্রোজ ফাইলটি পরিবর্তন করে থাকেন তবে নিশ্চিত হন যে আপনি ".csproj.user" ফাইলটিও পরিবর্তন বা মুছবেন।


1

আমারও সমস্যা ছিল তাই আমি আউটপুট ডিরেক্টরিগুলি পরিষ্কার করার জন্য প্রকল্পের বৈশিষ্ট্যে একটি প্রাক-বিল্ড ইভেন্ট তৈরি করেছি ${projectPath}\bin,${projectPath}\obj\${ConfigurationName}। অন্য একটি প্রকল্পে আমিও এই ত্রুটিটি পেয়েছিলাম, এমনকি পরিষ্কার করার জায়গাগুলিও। দ্বিতীয় প্রকল্পে আমি প্রকল্পের ফাইলে তালিকাভুক্ত হিসাবে সংকলন করছিলাম:

<MvcBuildViews>true</MvcBuildViews>

আমি সত্যকে মিথ্যাতে পরিবর্তিত করেছি এবং এটি ত্রুটি সম্পর্কে আর অভিযোগ করে না, তবে এখনও সঠিকভাবে চলে ran আমি দাবি করব না যে আমি দ্বিতীয় ত্রুটির কারণ হ'ল ঠিক জানি, তবে কমপক্ষে এটি আমাকে আপাতত এগিয়ে নিয়ে যেতে পেরেছিল।


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

0

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

এই সমাধান বনাম কিছু সংস্করণে অন্তর্ভুক্ত করা হয়েছে, কিন্তু শুধুমাত্র আমি বলতে পারে যে, আমি বনাম সমস্যা 2013 আপডেট 5. (দেখুন 'সাবধান " নিচে, এটা এই সংস্করণে সংশোধন করা যেতে পারে, কিন্তু আমার বিশেষ করে শুধুমাত্র কাজ করছে না অ-স্ট্যান্ডার্ড কেস)।

আমি ত্রুটি থেকে দ্রাবণ ধার নিয়েছি : ভিজ্যুয়াল স্টুডিও সংযোগের অ্যাপ্লিকেশন স্তরের বাইরে'DLDININition = 'মেশিনটোইপ্লিকেশন'।

সমাধানটিতে ওয়েব অ্যাপ্লিকেশন প্রকল্পের ( .csprojফাইল) এই লাইনগুলি অন্তর্ভুক্ত রয়েছে যা অফারিং ইন্টারমিডিয়েট ফাইলগুলি মুছে ফেলার জন্য পরিচালনা করে:

<!--Deal with http://connect.microsoft.com/VisualStudio/feedback/details/779737/error-allowdefinition-machinetoapplication-beyond-application-level, 
we will need to clean up our temp folder before MVC project starts the pre-compile-->
<PropertyGroup>
    <_EnableCleanOnBuildForMvcViews Condition=" '$(_EnableCleanOnBuildForMvcViews)'=='' ">true</_EnableCleanOnBuildForMvcViews>
</PropertyGroup>
<Target Name="CleanupForBuildMvcViews" Condition=" '$(_EnableCleanOnBuildForMvcViews)'=='true' and '$(MVCBuildViews)'=='true' " BeforeTargets="MvcBuildViews">
    <ItemGroup>
     <_PublishTempFolderNamesToCleanup Include="Database;TransformWebConfig;CSAutoParameterize;InsertAdditionalCS;ProfileTransformWebConfig;Package;AspnetCompileMerge" />
    </ItemGroup>
    <!--Force msbuild to expand all the wildcard characters so to get real file paths-->
    <CreateItem Include="@(_PublishTempFolderNamesToCleanup->'$(BaseIntermediateOutputPath)**\%(identity)\**\*')">
     <Output TaskParameter="Include" ItemName="_EvaluatedPublishTempFolderNamesToCleanup" />
    </CreateItem>
    <Delete Files="@(_EvaluatedPublishTempFolderNamesToCleanup)" />
</Target>

সাবধানতা: কোনও কারণে সম্ভবত আমি এটিকে প্রকল্পের মধ্যে অন্তর্ভুক্ত করেছি, দর্শনগুলি তৈরির জন্য আমার বিল্ড টার্গেটটির "BuildViews"পরিবর্তে নামকরণ করা হয়েছিল "MvcBuildViews", সুতরাং আমাকে BeforeTargetsসেই অনুযায়ী বৈশিষ্ট্যটি সংশোধন করতে হয়েছিল । আমি PropertyGroupশর্তটি সরানো ও শর্তকে সহজ করেও লক্ষ্যটিকে সরলীকরণ করেছি :

  <Target Name="CleanupForBuildMvcViews" Condition="'$(MVCBuildViews)'=='true' " BeforeTargets="BuildViews">
    <ItemGroup>
     <_PublishTempFolderNamesToCleanup Include="Database;TransformWebConfig;CSAutoParameterize;InsertAdditionalCS;ProfileTransformWebConfig;Package;AspnetCompileMerge" />
    </ItemGroup>
    <!--Force msbuild to expand all the wildcard characters so to get real file paths-->
    <CreateItem Include="@(_PublishTempFolderNamesToCleanup->'$(BaseIntermediateOutputPath)**\%(identity)\**\*')">
     <Output TaskParameter="Include" ItemName="_EvaluatedPublishTempFolderNamesToCleanup" />
    </CreateItem>
    <Delete Files="@(_EvaluatedPublishTempFolderNamesToCleanup)" />
  </Target>

0

আমার ক্ষেত্রে আমি দেখেছি যে যখন আমার কাছে এমভিসি বিল্ডভিউ এবং প্রেকম্পাইলডিউরিং প্রকাশিত উভয়ই সত্য true যা এই সমস্যাটির কারণ হয়েছিল।

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

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

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