我正在使用VS2015和MSBuild 14。
我的解决方案有很多项目,但其中有三个是旧的ASMX网站。 ASMX网站"项目"没有自己的项目文件,但在解决方案文件本身的XML中有详细说明。
解决方案在Visual Studio中构建良好。
但是,当我尝试在MSBuild的命令行上构建时,我收到一条错误消息。这是我的MSBuild命令:
C:\> msbuild MySolution.sln /t:MyAsmxProject
所有依赖项目(主要是c#类库)都是按照我的期望构建的。很多输出到运行msbuild的cmd窗口,直到我们通过msbuild进行以下操作:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe -v /MyAsmxProject
-p MyAsmxProject\ -u -f -d -fixednames Precompiled\MyAsmxProject\
整件事在这里爆炸,出现以下错误:
ASPNETCOMPILER : error ASPCONFIG: Could not load the assembly.
The property 'assembly' must be a valid assembly.
[C:\My\Long\Path\MySolution\MyAsmxProject.metaproj]
现在起初,我并不知道什么是" metaproj"文件是,并且无法找到该文件,但我确实理解它是内部创建的介入项目文件,以便msbuild可以对解决方案文件进行操作。我发现如果设置环境变量,我可以看到metaproj文件:
set MSBuildEmitSolution=1
然后重新运行msbuild命令。我现在有我的解决方案和我的asmx项目的metaproj文件,它们似乎是上面错误消息中引用的文件。
这些都是非常密集的msbuild文件,但它们都没有一个名为" assembly"的XML节点(元素)。并且它们中没有一个具有任何具有属性或属性的XML节点" assembly"适用于他们。
所以我不清楚这个错误是什么以及如何解决它。并且还不清楚为什么它会与msbuild一起出现,而不是与visual studio合作。
最值得赞赏的任何见解或建议。
答案 0 :(得分:1)
虽然我不完全明白为什么,但我找到了解决方案。
即,如果我以管理员身份运行我正在进行msbuild的命令窗口,我就不会收到此错误。这对我来说是一个可以接受的解决方案。
然而......更具体地了解错误意味着什么,以及为什么管理员能够发挥作用仍然是很好的。