समस्या को मध्यवर्ती फ़ाइलों के साथ करना है, लेकिन एक और समाधान है जो विचारों को बनाने से पहले उन मध्यवर्ती फ़ाइलों को साफ करने में शामिल है।
इस समाधान को वीएस के कुछ संस्करण में शामिल किया गया है, लेकिन मैं केवल यह कह सकता हूं कि मुझे वीएस 2013 अपडेट 5 में समस्या थी। ( नीचे "खबरदार देखें " , यह इस संस्करण में तय किया जा सकता है, लेकिन केवल मेरे विशेष रूप से काम नहीं कर रहा है। गैर-मानक मामला)।
मैंने विज़ुअल स्टूडियो कनेक्ट पर एप्लिकेशन स्तर से परे त्रुटि: allowDefinition = 'MachineToApplication' से सॉल्यूशन उधार लिया था ।
समाधान में इन पंक्तियों को वेब एप्लिकेशन प्रोजेक्ट ( .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>