Ошибка ASPNETCOMPILER ASPCONFIG: не удалось загрузить файл или сборку "Microsoft.VisualBasic.Activities.Compiler" или одну из его зависимостей

Я только что обновил свой проект до Asp.Net 4, начиная с версии 3.5. Когда сборка начинается с TeamCity, я получаю следующую ошибку:

[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

Я попытался скопировать сборки ссылок на .net в C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0, думая, что это исправит, но все равно не повезло. Любые мысли?

Ответ 1

Эта ошибка связана с библиотеками классов в решении, ссылающемся на более старые (v3 или v3.5) системные сборки. Эти библиотеки классов ссылались на мой сайт, поэтому сборки системы были скопированы в папку bin вместе с библиотеками классов. Возможно, системные сборки в каталоге 3.5 имеют разные разрешения, чем каталог 4.0, и когда aspnet_compiler попытался загрузить их из каталога bin, он запустил.

После прохождения каждого файла csproj и обновления значений <RequiredTargetFramework> до 4.0 все работает как ожидалось.

Ответ 2

Для меня это было действительно несоответствие x86/x64. Я решил это, указав путь к x64 MSBuild через переменную среды MSBuild:

Set the MSBuild environment variable

Ответ 3

Я получил ту же ошибку при сборке .csproj_deploy от VS. Все остальные проекты, в том числе и веб, в решении построены нормально. На самом деле это была Microsoft.VisualBasic.Activities.Compiler dll в моей папке веб-бина. Когда я щелкнул "Построить/очистить решение", все файлы в папке были удалены, кроме этого. Я вручную удалил этот файл и собрал заново, и он все в порядке. На этот раз я даже не вижу этот файл в папке bin.

Ответ 4

Похоже на несоответствие x86/x64 - я настоятельно рекомендую на самом деле использовать установщик фреймворка, чем взломать его, скопировав файлы вручную

Ответ 5

Я нашел очень простое принятое решение, представленное здесь, исправил проблему для меня, это установка Windows SDK для .NET Framework 4 (или эквивалент для вашей версии Windows).

Обратите внимание на комментарий принятого ответа, в котором говорится, что "Intellisense и Reference Assemblies" являются единственными функциями SDK, необходимыми для устранения этой проблемы.

Ответ 6

Простым решением для меня было изменение строки TargetFrameworkVersion файла .vbproj. Простое изменение "v4.0" до "4.0" удалило все ошибки соавторов и исправило мои проблемы с intellisense (теги asp.net не были распознаны).

Ответ 7

У нас была эта ошибка при переключении наших сред хостинга (на новый веб-сервер с IIS).

Исправление было:

  • Измените пул приложений/расширенные настройки и установите Enable 32 bit applications на true или
  • Удалите все сборки из папки bin, которая уже принадлежит структуре (например, мы имели System.Data.dll в нашей папке bin, которая была явно построена для 32b - удаление исправлено)

Ответ 8

Я обнаружил, что у меня была ненужная ссылка на dll "Microsoft.VisualBasic.Activities.Compiler". Как только я удалил ссылку, все было сработано.

Ответ 9

Если вы создаете веб-проект в x64 в Visual Studio и запускаете на IIS Express, вы должны включить следующую настройку:

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