18

我刚刚将我的项目从 3.5 升级到 Asp.Net 4。当构建从 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 认为可以解决问题,但仍然没有运气。有什么想法吗?

4

9 回答 9

10

对我来说,这确实是 x86/x64 不匹配。我通过 MSBuild 环境变量指定 x64 MSBuild 的路径来解决它:

设置 MSBuild 环境变量

于 2012-11-01T09:56:55.357 回答
9

此错误与解决方案中引用较旧(v3 或 v3.5)系统程序集的类库有关。我的网站引用了这些类库,因此系统程序集与类库一起被复制到 bin 文件夹中。也许 3.5 目录中的系统程序集与 4.0 目录具有不同的权限,并且当 aspnet_compiler 试图从 bin 目录加载它们时,它会报错。

在浏览每个 csproj 文件并将<RequiredTargetFramework>值更新为4.0之后,一切都按预期工作。

于 2010-06-16T23:22:16.870 回答
7

.csproj_deploy从 VS构建时遇到了同样的错误。所有其他项目,包括解决方案中的网络都构建良好。我的 web bin 文件夹中实际上有这个Microsoft.VisualBasic.Activities.Compilerdll。当我单击构建/清理解决方案时,文件夹中的所有文件都被删除了,除了这个。我手动删除了这个文件并重新构建,它构建得很好。这一次,我什至在 bin 文件夹中都没有看到这个文件。

于 2010-09-16T13:38:02.613 回答
2

看起来像 x86/x64 不匹配 - 我强烈建议实际使用框架安装程序,而不是通过手动复制文件来破解它

于 2010-06-16T17:26:48.750 回答
2

对我有用的简单解决方案是修改 .vbproj 文件的 TargetFrameworkVersion 行。只需将“v4.0”更改为“4.0”即可消除所有 copmiler 错误并修复了我的智能感知问题(asp.net 标记未被识别)。

于 2012-07-30T15:33:39.167 回答
2

我发现这里提出的非常简单的公认解决方案为我解决了这个问题,即安装适用于 .NET Framework 4 的 Windows SDK(或您的 Windows 版本的等效版本)。

请注意对已接受答案的评论,即“智能感知和参考程序集”是解决此问题所需的 SDK 的唯一功能。

于 2012-07-12T14:21:55.927 回答
2

在切换我们的托管环境(到带有 IIS 的新 Web 服务器)时,我们遇到了这个错误。

解决方法是:

  • 更改应用程序池/高级设置,并设置Enable 32 bit applicationstrue, 或
  • 从 bin 文件夹中删除所有已经属于框架的程序集(例如,我们System.Data.dll在 bin 文件夹中,这显然是为 32b 构建的 - 删除它解决了问题)
于 2015-02-24T10:59:17.827 回答
0

我发现我对“Microsoft.VisualBasic.Activities.Compiler”dll 有不必要的引用。一旦我删除了引用,一切都正常了。

于 2016-03-28T20:24:00.490 回答
0

如果您在 Visual Studio 中以 x64 格式构建 Web 项目并在 IIS Express 上运行,则必须启用以下设置:

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

于 2017-09-27T17:26:15.827 回答