ntt*_*akr 11 iis-7 visual-studio-2010 asp.net-mvc-3
我目前正在与Razor合作开发一个MVC3项目.我已经编译了视图,以便在编译时了解拼写错误等.
一旦我在项目配置文件中打开<MvcBuildViews> true </ MvcBuildViews>,就会在编译期间收到以下错误:
错误1使用在应用程序级别之外注册为allowDefinition ='MachineToApplication'的部分是错误的.此错误可能是由于未在IIS中将虚拟目录配置为应用程序引起的.
我阅读了几个可能的问题解决方案,主要涉及IIS和虚拟目录或应用程序.问题是,我不使用IIS,而是使用默认的Visual Studio开发服务器.
我该怎么做才能解决这个问题?
ntt*_*akr 23
我在网上尝试了很多不同的解决方案,但要么它们不太适合我的问题,要么它们不起作用.
回顾一下我的问题:
在打开CompileViews之后,我在编译期间立即得到了上述错误.我使用VS2010的默认Visual Studio开发服务器来测试我的MVC应用程序.
今天我在微软开发人员的支持下开了一个请求,而且 - 我很惭愧承认 - 在技术人员的回调中大约30秒得到我的回答:
他说的只是:请转到你的obj文件夹并删除所有内容.然后再次编译.
而这真的就是它.
因此,经过大量关于我自己的动摇之后,我想与大家分享结果.
当obj文件夹中有Web项目输出(模板化的web.config或临时发布文件)时,会发生此问题。使用的ASP.NET编译器不够聪明,无法忽略obj文件夹中的内容,因此它引发错误。
另一个解决方法是在调用<AspNetCompiler>之前取消发布输出。打开您的.csproj并更改它:
<Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
</Target>
Run Code Online (Sandbox Code Playgroud)
对此:
<Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
<ItemGroup>
<ExtraWebConfigs Include="$(BaseIntermediateOutputPath)\**\web.config" />
<ExtraPackageTmp Include="$([System.IO.Directory]::GetDirectories("$(BaseIntermediateOutputPath)", "PackageTmp", System.IO.SearchOption.AllDirectories))" />
</ItemGroup>
<Delete Files="@(ExtraWebConfigs)" />
<RemoveDir Directories="@(ExtraPackageTmp)" />
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
</Target>
Run Code Online (Sandbox Code Playgroud)
这将删除\ obj下的所有web.configs以及\ obj下的所有PackageTmp文件夹。
归档时间: |
|
查看次数: |
3112 次 |
最近记录: |