ASPNETCOMPILER错误,无法加载程序集(仅在msbuild中)

时间:2016-03-15 18:40:31

标签: asp.net visual-studio msbuild

我正在使用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合作。

最值得赞赏的任何见解或建议。

1 个答案:

答案 0 :(得分:1)

虽然我不完全明白为什么,但我找到了解决方案。

即,如果我以管理员身份运行我正在进行msbuild的命令窗口,我就不会收到此错误。这对我来说是一个可以接受的解决方案。

然而......更具体地了解错误意味着什么,以及为什么管理员能够发挥作用仍然是很好的。