我有一个VS 2010解决方案,其中包含一个网站,其中包含一个Web服务。 Web服务引用了一个COM dll,它在我们的64位构建服务器上构建解决方案时会导致问题。我得到典型的32/64位错误:
ASPNETCOMPILER:错误ASPCONFIG:无法加载文件或程序集“xxx”或其依赖项之一。试图加载格式不正确的程序
当我使用32位aspnet_compiler构建网站时,它构建正常。那么,我如何指定一个网站应该被构建为32位? VS中的配置管理器只允许我选择任何CPU,所以我不能将它改为x86这个网站...
感谢。
答案 0 :(得分:8)
您可以使用以下命令。实际上,在这种情况下,您使用ASPNetCompiler x86版本来构建自己的项目
call "C:\Program Files\Microsoft Visual Studio 2008\VC\vcvarsall.bat" x86
MSBuild MySolutiuon.sln
您还可以将x86_amd64
用于任何cpu。请注意,您可以加载配置
MSBuild
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="PrecompileWeb">
<AspNetCompiler
VirtualPath="/MyWebSite"
PhysicalPath="c:\inetpub\wwwroot\MyWebSite\"
TargetPath="c:\precompiledweb\MyWebSite\"
Force="true"
Debug="true"
FixedNames="True"
/>
</Target>
</Project>
使用上述配置你必须使用
MSBuild your.xml /p:Configuration=Release
答案 1 :(得分:1)
@Vilx,检查依赖性walker以了解它到底有多远。我的猜测是它可能会停在vjsnativ.dll
。如果这是尽可能的,请尝试this workaround。
否则,您将不得不追逐程序找不到的每个DLL,并将它们复制到您的程序(或其 bin )目录中。
答案 2 :(得分:0)
它不是编译问题,而是环境问题。 ASP.NET网站将始终构建为任何CPU。
但是,如果在64位计算机上加载它,默认情况下运行64位版本的IIS 无法加载COM DLL,它失败。
您需要配置IIS以在64位Windows上运行32位应用程序: http://www.microsoft.com/technet/prodtechnol/windowsserver2003/library/iis/405f5bb5-87a3-43d2-8138-54b75db73aa1.mspx
答案 3 :(得分:0)
您需要使用ASP.NET Compilation Tool (Aspnet_compiler.exe)。请查看文档末尾的“查找正确版本的Aspnet_compiler.exe”一章,它解释了如何查找该工具的32位与64位版本。
答案 4 :(得分:0)
在Visual Studio中右键单击Web项目
选择“属性”。
单击左侧的“构建”选项卡
在“常规”下,将“平台目标”更改为“x86”,因此它将始终构建为32位。
现在,当您执行此操作时,您可能会注意到“构建”选项卡上的“配置”设置为“活动(调试)”。您需要将该下拉菜单更改为您拥有的所有不同配置设置(即“发布”,“QA”,“暂存”,“演示”等)。并将相同的“平台目标”更改为“ x86“为每一个。
完成后不要忘记单击“保存”按钮 - 如果您在开发框中,请记得将其设置回“调试”。
这可能就是为什么它只能在您的机器上构建它,而不是在构建服务器上,因为构建服务器很可能设置为针对不同的配置构建 - 这是正确的,因为您不应该在构建服务器上使用“调试”配置。
答案 5 :(得分:0)
虽然这是一个老问题,但我遇到了同样的问题,我遇到了一些麻烦找到答案。
Visual Studio提供了两种开发Web应用程序的选项:网站和Web应用程序。我们的应用程序每页生成程序集,如果源更改,则会动态更新。另一方面,Web应用程序项目在visual studio中编译为一个程序集。更改源代码后,不会自动重建此程序集。本文档详细解释了这些差异:http://msdn.microsoft.com/en-us/library/aa730880(VS.80).aspx#wapp_topic5
另一个与此相关的差异是 Web应用程序项目允许您实际选择与网站项目相反的体系结构。将网站转换为Web应用程序并不是很难,但不是太简单(转换为Web应用程序的选项仅在创建... Web应用程序后才可用)。您可以采取的步骤: