我有一个.Net 3.5网站项目,我正在用VS2010 (最近移动自VS2008)开发,并使用MSBuild和TeamCity进行构建/部署。我正在使用Msbuild版本3.5。网站项目通过Interop-dll与几个COM组件进行通信。据我所知,这些互操作是由Visual作为COM组件的包装器生成的。我的问题是,当使用Microsoft.WebDeployments.targets构建和部署应用程序时,我会收到一条运行时错误消息,上面写着:
无法加载文件或程序集“Interop.cvvToolkitLib”或其依赖项之一。试图加载格式不正确的程序。
在谷歌搜索了类似的问题之后,我发现很多帖子都说为"AnyCpu“构建应该解决这个问题,因为生成互操作的工具默认为x86。
因此,我打开了构建脚本,并试图将平台指定为AnyCpu:
<Platform>AnyCPU</Platform>还是同样的问题。更多的googling暗示它可能是"AnyCpu“或”任何CPU“,所以我尝试了两者。还是没有运气。其他论坛帖子则提出这样的建议:
<ItemGroup>
<ConfigurationToBuild Include="Release|Any CPU">
<FlavorToBuild>Release</FlavorToBuild>
<PlatformToBuild>Any CPU</PlatformToBuild>
</ConfigurationToBuild>
</ItemGroup>或
<PlatformTarget>AnyCPU</PlatformTarget>错误保持不变。所以我对你的问题是:我是不是做错了什么让网站为任何CPU构建,或者解决方案可能在其他地方?我是否必须将一些参数显式地传递给<CallTarget Targets="Build"/>?
我对MSbuild不是很有经验,所以我可能会忽略一些重要的事情。我有其他的web应用程序(不是网站)与相同的COM组件通信,没有任何问题,所以这只是一个网站的问题。web应用程序的构建方式如下:
<MSBuild
Projects="$(ProjectFile)"
StopOnFirstFailure="true"
Targets="ResolveReferences;_CopyWebApplication;_BuiltWebOutputGroupOutput"
Properties="...Platform=AnyCPU..." />在这里,我传递平台作为一个属性,所以我只是猜测我需要一些类似的网站。
发布于 2010-12-16 08:41:36
使用3.5版本的MSbuild解决了这一问题。我使用的是带有3.5工具版本的4.0版本。由于某些原因,导致interop构建在错误的平台上。不过,我不知道为何会引起这个问题。在3.5个项目中使用MSbuild 4.0时,我已经看到了一些奇怪的问题。如果有人能告诉我这些事情发生的原因,我会很高兴的。
https://stackoverflow.com/questions/4437509
复制相似问题