C# 将生成过程从devenv更新为MSBuild:error allowDefinition=';机器应用';
我正在使用一个遗留应用程序。由于历史记录丢失的原因,生成过程涉及使用C# 将生成过程从devenv更新为MSBuild:error allowDefinition=';机器应用';,c#,msbuild,precompile,devenv,C#,Msbuild,Precompile,Devenv,我正在使用一个遗留应用程序。由于历史记录丢失的原因,生成过程涉及使用devenv而不是msbuild进行生成 我正在使用SonarScanner.MSBuild.exe设置SonarQube。这似乎没有捕获devenv构建的任何信息/统计信息(我猜是名称中的线索),因此我希望转到MSBuild 使用“C:\Program Files(x86)\MSBuild\14.0\Bin\MSBuild.exe”solutionname.sln/p:PostBuildEvent=/p:Configurati
devenv
而不是msbuild
进行生成
我正在使用SonarScanner.MSBuild.exe
设置SonarQube。这似乎没有捕获devenv
构建的任何信息/统计信息(我猜是名称中的线索),因此我希望转到MSBuild
使用“C:\Program Files(x86)\MSBuild\14.0\Bin\MSBuild.exe”solutionname.sln/p:PostBuildEvent=/p:Configuration=Debug/t:Rebuild/m
在本地开发计算机上运行以生成解决方案。但是,它在我们的生成框上失败,并出现以下错误:
path\webservice project\web.config(5):错误ASPCONFIG:在应用程序级别之外使用注册为allowDefinition='MachineToApplication'的节是错误的。此错误可能是由于未在IIS中将虚拟目录配置为应用程序造成的。[path\webservice project.metaproj]
阅读错误消息并联机研究,似乎这可能是由于使用IIS中不存在的vdir的-v
开关调用aspnet_编译器所致
这是有道理的,IIS是在我的开发机器上配置的,但不是在构建箱上配置的(因为它是构建箱而不是应用服务器!)。理想情况下,我希望使用MSBuild获得此构建,而不必在构建框上配置IIS(这是一个选项,但对我来说不是“正确”的解决方案),也不必中断当前的构建过程(更新这是一项更大的工作,需要大量测试!)
- 错误消息中引用的web.config没有对
的引用allowDefinition
- 在读取MSBuild输出时,.metaproj似乎正在调用
,因此这似乎是个可疑的问题C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet\u compiler.exe-v/localhost\u 2437-p path\webservice项目\-u-f-d预编译web\localhost\u 2437\
- 生成输出中列出的.metaproj不存在,因此可能是由MSBuild(?)创建的临时文件
Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "Projecname", "project path\", "{F7F0F1A0-B5BB-4D69-90D1-7E0B6C1B1A63}"
ProjectSection(WebsiteProperties) = preProject
TargetFrameworkMoniker = ".NETFramework,Version%3Dv4.6.1"
Debug.AspNetCompiler.VirtualPath = "/localhost_4102"
Debug.AspNetCompiler.PhysicalPath = "path\"
Debug.AspNetCompiler.TargetPath = "PrecompiledWeb\localhost_4102\"
Debug.AspNetCompiler.Updateable = "true"
Debug.AspNetCompiler.ForceOverwrite = "true"
Debug.AspNetCompiler.FixedNames = "false"
Debug.AspNetCompiler.Debug = "True"
VWDPort = "4102"
SlnRelativePath = "path\"
EndProjectSection
ProjectSection(ProjectDependencies) = postProject
...snip...
EndProjectSection
EndProject
因此,这里似乎有一些预编译设置,这使得它使用导致MSBuild出错的-v设置调用aspnet_compiler.exe
我对网站项目类型或预编译没有太多经验。是否有一种方法可以关闭MSBuild的预编译而不更改当前devenv生成过程的行为?如果删除该解决方案并从头创建新的解决方案文件,会发生什么情况?(即,没有该预项目部分的网站)。当我将现有网站添加到解决方案时,它会创建与我现有SLN中相同的
预项目
部分。我的短期解决方案是复制解决方案,删除网站项目,并将此解决方案用于msbuild。它遗漏了一些项目,但80%比0%好如果您删除该解决方案并从头创建新的解决方案文件会发生什么?(即,没有该预项目部分的网站)。当我将现有网站添加到解决方案时,它会创建与我现有SLN中相同的预项目
部分。我的短期解决方案是复制解决方案,删除网站项目,并将此解决方案用于msbuild。它遗漏了一些项目,但80%比0%好