문제는 중간 파일과 관련이 있지만 뷰를 구축하기 전에 중간 파일을 정리하는 또 다른 솔루션이 있습니다.
이 솔루션은 일부 VS 버전에 포함되어 있지만 VS 2013 업데이트 5에서 문제가 있었다고 만 말할 수 있습니다 ( "주의" 참조). 이 버전에서는 수정할 수 있지만 내 특정 버전에서만 작동하지는 않습니다. 비표준 사례).
Visual Studio Connect의 응용 프로그램 수준을 넘어서 오류 : 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>