Dan*_*ann 103 asp.net-mvc web-deployment one-click-web-publishing
我可以在我的本地计算机上运行我的Asp.Net MVC 2应用程序而不会出现问题.只需运行/调试.
但如果我已经建成它,我就无法发布它!我必须清理解决方案并再次发布.我知道这不是系统关键,但它真的很烦人."一键发布"不是"清洁解决方案,然后单击发布"
确切的错误如下:
错误11使用在应用程序级别之外注册为allowDefinition ='MachineToApplication'的部分是错误的.此错误可能是由于未在IIS中将虚拟目录配置为应用程序引起的.
我怀疑它与Views文件夹中的Web.Config有关,但是为什么只有在我之前构建一次之后.请注意,该应用程序一旦发布就可以正常工作.
ben*_*age 76
我的MVC应用程序遇到了同样的问题.这令人沮丧,因为我仍然希望我的视图被检查,所以我不想关闭MvcBuildViews
幸运的是,我遇到了一个给我答案的帖子.保持MvcBuildViews为true,然后您可以在项目文件中添加以下行:
<BaseIntermediateOutputPath>[SomeKnownLocationIHaveAccessTo]</BaseIntermediateOutputPath>
Run Code Online (Sandbox Code Playgroud)
并使该文件夹不在项目的文件夹中.适合我.这不是一个完美的解决方案,但它现在很好.确保从项目文件夹中删除包文件夹(位于obj\Debug和/或obj\Release文件夹中),否则您将继续收到错误.
FWIW,MS知道这个错误 ......
jim*_*469 40
我删除了我的obj/Debug文件夹中的所有内容,并修复了此错误.这让我离开了
<MvcBuildViews>true</MvcBuildViews>
Run Code Online (Sandbox Code Playgroud)
我的项目文件中的选项(使用T4MVC T4模板很方便).
编辑:只需使用"Build" - >"Rebuild Solution"菜单就可以轻松实现这一点(因为重建实际上是清除obj/Debug文件夹,然后构建解决方案).
jru*_*ell 26
我在MS Connect页面上使用此解决方法来解决此错误.它在运行AspNetCompiler之前清除项目下的所有obj和temp文件(所有配置).
修改项目文件中的MvcBuildViews目标,使其依赖于清理Visual Studio已创建的打包文件的目标.这些目标自动包含在Web应用程序项目中.
每次执行MvcBuildViews目标时,都将删除所有打包文件.
<Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'" DependsOnTargets="CleanWebsitesPackage;CleanWebsitesPackageTempDir;CleanWebsitesTransformParametersFiles;">
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(MSBuildProjectDirectory)" />
</Target>
Run Code Online (Sandbox Code Playgroud)
Chr*_*nes 24
当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文件夹.
| 归档时间: |
|
| 查看次数: |
24023 次 |
| 最近记录: |