“aspnet_compiler.exe”已退出,代码为1,尝试使用相同标题的所有其他帖子

时间:2016-07-08 21:46:24

标签: asp.net asp.net-mvc visual-studio visual-studio-2015 asp.net-mvc-5

项目:

  • ASP.NET 4.5.2
  • MVC 5
  • Visual Studio 2015(最新)

在构建项目时,今天它神秘地开始错误地输出标题中的错误。现在,它不是失败的构建,而是发布:

========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
========== Publish: 0 succeeded, 1 failed, 0 skipped ==========

现在,我已经进入了临时构建文件夹,

[path to project]\obj\Release\AspnetCompileMerge\Source

它似乎拥有推送到沙箱所需的所有文件,但是当我这样做时尝试通过大量消息(50多行)到达网站时出错。一旦我将它们格式化,它就会附加。

建议?

注意:其他项目仍然可以正常编译。这仅限于此项目。

注2:我在命令行中看到了几个使用aspnet_compiler.exe -errorstack标志的请求,但我还没弄明白{{1} }和-v标志意味着,所以我目前无法提供输出。我之前从未使用过命令行进行开发,所以详情请参阅。

更新1:我实际上已经找到了命令,这就是我得到的:

-p

特别注意:

D:\[path to project]>aspnet_compiler.exe -errorstack -v /[project] -p D:\[path to project]\
Microsoft (R) ASP.NET Compilation Tool version 4.0.30319.33440
Utility to precompile an ASP.NET application
Copyright (C) Microsoft Corporation. All rights reserved.

D:\[path to project]\web.config(43): error ASPCONFIG: It is an error to use a section registered as allowDefinition='MachineToApplication' beyond application level.  This error can be caused by a virtual directory not being configured as an application in IIS.

[ConfigurationErrorsException]: It is an error to use a section registered as allowDefinition='MachineToApplication' beyond application level.  This error can be caused by a virtual directory not being configured as an application in IIS. (D:\[path to project]\web.config line 43)
   at System.Configuration.ConfigurationSchemaErrors.ThrowIfErrors(Boolean ignoreLocal)
   at System.Configuration.BaseConfigurationRecord.GetSectionRecursive(String configKey, Boolean getLkg, Boolean checkPermission, Boolean getRuntimeObject, Boolean requestIsHere, Object& result, Object& resultRuntimeObject)
   at System.Configuration.BaseConfigurationRecord.GetSection(String configKey)
   at System.Web.Configuration.RuntimeConfig.GetSectionObject(String sectionName)
   at System.Web.Configuration.RuntimeConfig.GetSection(String sectionName, Type type, ResultsIndex index)
   at System.Web.Configuration.RuntimeConfig.get_Compilation()
   at MTConfigUtil.GetCompilationConfig(String vpath)
   at System.Web.Compilation.BuildManager.IsBatchEnabledForDirectory(VirtualPath virtualDir)
   at System.Web.Compilation.BuildManager.PrecompileWebDirectoriesRecursive(VirtualDirectory vdir, Boolean topLevel)
   at System.Web.Compilation.BuildManager.PrecompileWebDirectoriesRecursive(VirtualDirectory vdir, Boolean topLevel)
   at System.Web.Compilation.BuildManager.PrecompileWebDirectoriesRecursive(VirtualDirectory vdir, Boolean topLevel)
   at System.Web.Compilation.BuildManager.PrecompileAppInternal(VirtualPath startingVirtualDir, IEnumerable`1 excludedVirtualPaths)
   at System.Web.Compilation.BuildManager.PrecompileApp(VirtualPath startingVirtualDir, IEnumerable`1 excludedVirtualPaths)
   at System.Web.Compilation.BuildManager.PrecompileApp(ClientBuildManagerCallback callback, IEnumerable`1 excludedVirtualPaths)
   at System.Web.Compilation.BuildManagerHost.PrecompileApp(ClientBuildManagerCallback callback, List`1 excludedVirtualPaths)
   at System.Web.Compilation.BuildManagerHost.PrecompileApp(ClientBuildManagerCallback callback, List`1 excludedVirtualPaths)
   at System.Web.Compilation.ClientBuildManager.PrecompileApplication(ClientBuildManagerCallback callback, Boolean forceCleanBuild)
   at System.Web.Compilation.ClientBuildManager.PrecompileApplication(ClientBuildManagerCallback callback)
   at System.Web.Compilation.Precompiler.Main(String[] args)

问题是,我在该行的Web.Config中唯一的东西是

This error can be caused by a virtual directory not being configured as an application in IIS. (D:\[path to project]\web.config line 43)

你知道,因为每次我停止调试时,VS 2015中内置的IIS都会崩溃,我在Windows上设置了IIS,只是指向我的项目目录。但它到目前为止一直很好。这可能是问题吗?

编辑2:在我的Web.Config中注释第43行现在抛出这个:

<authentication mode="None" />
显然,有一些非常非常奇怪的事情。考虑到自从我上次更改Web.Config以来,我已经发布了至少两次。

2 个答案:

答案 0 :(得分:1)

结束对项目的备份,从轨道上进行核对,使用新的空白项目进行修复,添加所有必需的NuGet包,然后从备份中复制我直接编辑的所有文件。包括所有迁移文件也有帮助,因为这意味着我可以在我离开的地方拿起数据库。我唯一需要使用细齿梳子的是Web.Config - 我想确保它设置得很完美,所以我像手术医生一样手工编辑它。

仅供参考,我在项目卸载时通过文件系统处理了所有内容,然后将“包含在项目中”的任何内容从头开始创建。

不是理想的情况,但是嘿。这个项目仍在建设中,所以我在重建时最多只损失了一两个小时。困难的部分是倾销我的Team Services存储库,因为它不接受新项目。在我确认新设置100%正常工作后,我这样做了,因为我并不太担心无法在某个日期之前回滚。

答案 1 :(得分:0)

重构解决方案后,我有一个包含注释掉的类的文件,所以它只有using子句和命名空间集。它使用的命名空间不再被任何文件使用,但可能已经以某种方式缓存,因此没有立即出错。

建筑物没有拿起它,导致 aspnet_compiler退出,代码1 错误加上一些其他不相关的错误,这些错误并非错误。删除空类文件修复它。还要从Views / web.config中删除任何旧的命名空间。