ERRO ASPNETCOMPILER ASPCONFIG: Não foi possível carregar arquivo ou montagem 'microsoft.visualbasic.activities.compiler' ou uma de suas dependências

StackOverflow https://stackoverflow.com/questions/3055633

Pergunta

Acabei de atualizar meu projeto para asp.net 4, a partir de 3.5. Quando a construção começa com o TeamCity, recebo o seguinte erro:

[Project "Website.metaproj" (Rebuild target(s)):] C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe -v /Website -p Website\ -u -f PrecompiledWeb\Website\
[12:11:50]: [Project "Website.metaproj" (Rebuild target(s)):] ASPNETCOMPILER error ASPCONFIG: Could not load file or assembly 'Microsoft.VisualBasic.Activities.Compiler' or one of its dependencies. An attempt was made to load a program with an incorrect format.
[12:11:50]: MSBuild output:
[12:11:50]: Copying file from "C:\Program Files\TeamCity\buildAgent\work\8bbb8fc03bd91944\Dependencies\wnvxls.dll" to "Website\\Bin\wnvxls.dll".
[12:11:50]: Copying file from "C:\Program Files\TeamCity\buildAgent\work\8bbb8fc03bd91944\Dependencies\wnvxls.xml" to "Website\\Bin\wnvxls.xml".
[12:11:50]: C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe -v /Website -p Website\ -u -f PrecompiledWeb\Website\
[12:11:50]: ASPNETCOMPILER : error ASPCONFIG: Could not load file or assembly 'Microsoft.VisualBasic.Activities.Compiler' or one of its dependencies. An attempt was made to load a program with an incorrect format. [C:\Program Files\TeamCity\buildAgent\work\8bbb8fc03bd91944\Website.metaproj]
[12:11:50]: Done Building Project "C:\Program Files\TeamCity\buildAgent\work\8bbb8fc03bd91944\Website.metaproj" (Rebuild target(s)) -- FAILED.
[12:11:50]: Done Building Project "C:\Program Files\TeamCity\buildAgent\work\8bbb8fc03bd91944\MyProject.sln" (Rebuild target(s)) -- FAILED.
[12:11:50]: Done Building Project "C:\Program Files\TeamCity\buildAgent\work\8bbb8fc03bd91944\MyProject.sln.teamcity.patch.tcprojx" (TeamCity_Generated_Build;TeamCity_Generated_NUnitTests target(s)) -- FAILED.
[12:11:50]: Build FAILED.
[12:11:50]: "C:\Program Files\TeamCity\buildAgent\work\8bbb8fc03bd91944\MyProject.sln.teamcity.patch.tcprojx" (TeamCity_Generated_Build;TeamCity_Generated_NUnitTests target) (1) ->
[12:11:50]: "C:\Program Files\TeamCity\buildAgent\work\8bbb8fc03bd91944\MyProject.sln" (Rebuild target) (2) ->
[12:11:50]: "C:\Program Files\TeamCity\buildAgent\work\8bbb8fc03bd91944\Website.metaproj" (Rebuild target) (3) ->
[12:11:50]: "C:\Program Files\TeamCity\buildAgent\work\8bbb8fc03bd91944\MyProject.Other\MyProject.Other.csproj" (Rebuild target) (5) ->
[12:11:50]: (CoreCompile target) ->
[12:11:50]: Helpers\ProgramHelper.cs(40,21): warning CS0168: The variable 'ex' is declared but never used [C:\Program Files\TeamCity\buildAgent\work\8bbb8fc03bd91944\MyProject.Other\MyProject.Other.csproj]
[12:11:50]: "C:\Program Files\TeamCity\buildAgent\work\8bbb8fc03bd91944\MyProject.sln.teamcity.patch.tcprojx" (TeamCity_Generated_Build;TeamCity_Generated_NUnitTests target) (1) ->
[12:11:50]: "C:\Program Files\TeamCity\buildAgent\work\8bbb8fc03bd91944\MyProject.sln" (Rebuild target) (2) ->
[12:11:50]: "C:\Program Files\TeamCity\buildAgent\work\8bbb8fc03bd91944\Website.metaproj" (Rebuild target) (3) ->
[12:11:50]: (Rebuild target) ->
[12:11:50]: ASPNETCOMPILER : error ASPCONFIG: Could not load file or assembly 'Microsoft.VisualBasic.Activities.Compiler' or one of its dependencies. An attempt was made to load a program with an incorrect format. [C:\Program Files\TeamCity\buildAgent\work\8bbb8fc03bd91944\Website.metaproj]
[12:11:50]: 1 Warning(s)
[12:11:50]: 1 Error(s)
[12:11:50]: Time Elapsed 00:00:31.48

Tentei copiar os assemblies de referência da estrutura .NET para C: Arquivos de Programas (x86) Assembléias de Referência Microsoft Framework.netFramework V4.0 Pensando que corrigiriam as coisas, mas ainda não há sorte. Alguma ideia?

Foi útil?

Solução 2

Esse erro teve a ver com as bibliotecas de classes na solução que referencia os conjuntos de sistemas mais antigos (v3 ou v3.5). Essas bibliotecas de classes foram referenciadas pelo meu site, para que os assemblies do sistema foram copiados para a pasta BIN junto com as bibliotecas de classes. Talvez os conjuntos do sistema no diretório 3.5 tenham permissões diferentes do diretório 4.0 e quando o ASPNET_COMPILER tentou carregá -las no diretório da bin, ele machucar.

Depois de passar por cada arquivo csproj e atualizar <RequiredTargetFramework> valores para 4.0, tudo está funcionando como esperado.

Outras dicas

Para mim, foi de fato uma incompatibilidade x86/x64. Eu resolvi especificando o caminho para o x64 msbuild através da variável de ambiente msbuild:

Set the MSBuild environment variable

Eu recebi o mesmo erro construindo o .csproj_deploy de vs. Todos os outros projetos, incluindo a Web na solução, construídos bem. Havia realmente isso Microsoft.VisualBasic.Activities.Compiler DLL na minha pasta Web Bin. Quando cliquei na solução de construção/limpeza, todos os arquivos da pasta foram excluídos, exceto isso. Excluí manualmente esse arquivo e construí novamente e ele construiu bem. Desta vez, eu nem vejo esse arquivo na pasta BIN.

Parece uma incompatibilidade x86/x64 - eu recomendo fortemente usar o instalador da estrutura, do que hackeando -o copiando os arquivos manualmente

Eu achei a solução aceita muito simples apresentada aqui corrigiu o problema para mim, sendo este instalando o Windows SDK para .NET Framework 4 (ou o equivalente para sua versão do Windows).

Observe o comentário sobre a resposta aceita que diz "Assembléias IntelliSense e Referência" são os únicos recursos do SDK necessário para corrigir esse problema.

A solução simples que funcionou para mim foi modificar a linha TargetFrameWorkVersion do arquivo .vbProj. Simplesmente alterar "v4.0" para "4.0" removeu todos os erros do copmiler e corrigiu meus problemas do IntelliSense (as tags do ASP.NET não estavam sendo reconhecidas).

Tivemos esse erro ao alternar nossos ambientes de hospedagem (para o novo servidor da Web com o IIS).

A correção era:

  • Altere o pool de aplicativos / configurações avançadas e defina Enable 32 bit applications para true, ou
  • Exclua todos os conjuntos da pasta BIN que já pertencem à estrutura (por exemplo, nós tivemos System.Data.dll em nossa pasta bin, que foi obviamente construída para 32b - excluindo -a corrigiu o problema)

Descobri que tinha uma referência desnecessária à dll 'Microsoft.VisualBasic.Activities.compiler'. Depois de remover a referência, todas as coisas funcionaram.

Se você estiver construindo um projeto da web no X64 no Visual Studio e em execução no IIS, você deve ativar a seguinte configuração:

Tools --> Options --> Projects & Solutions --> Web Projects --> Use the 64 bit version of IIS Express for web sites and projects

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top