Msbuild 为任何CPU构建网站

Msbuild 为任何CPU构建网站,msbuild,web,interop,Msbuild,Web,Interop,我有一个.NET3.5网站项目,我正在VS2010中开发(最近从VS2008迁移过来),并使用MSBuild和TeamCity进行构建/部署。我正在使用Msbuild工具版本3.5。网站项目通过互操作DLL与几个COM组件进行通信。据我所知,这些互操作是由VisualStudio作为COM组件的包装器生成的。我的问题是,当使用Microsoft.WebDeployments.targets构建和部署应用程序时,我会收到一条运行时错误消息,上面说: 无法加载文件或程序集 “Interop.cvvT

我有一个.NET3.5网站项目,我正在VS2010中开发(最近从VS2008迁移过来),并使用MSBuild和TeamCity进行构建/部署。我正在使用Msbuild工具版本3.5。网站项目通过互操作DLL与几个COM组件进行通信。据我所知,这些互操作是由VisualStudio作为COM组件的包装器生成的。我的问题是,当使用Microsoft.WebDeployments.targets构建和部署应用程序时,我会收到一条运行时错误消息,上面说:

无法加载文件或程序集 “Interop.cvvToolkitLib”或其 依赖关系。有人试图 用不正确的代码加载程序 格式

在谷歌搜索类似的问题后,我发现很多帖子都说为“AnyCpu”构建应该解决这个问题,因为生成互操作的工具默认为x86

因此,我打开构建脚本并尝试将平台指定为AnyCpu:

<Platform>AnyCPU</Platform>
AnyCPU
还是一样的问题。更多的谷歌搜索暗示可能是“AnyCpu”或“AnyCpu”,所以我尝试了两者。还是不走运。其他论坛帖子则提出了类似的建议:

<ItemGroup>
    <ConfigurationToBuild Include="Release|Any CPU">
      <FlavorToBuild>Release</FlavorToBuild>
      <PlatformToBuild>Any CPU</PlatformToBuild>
    </ConfigurationToBuild>
  </ItemGroup>

释放
任何CPU

AnyCPU
错误保持不变。所以我想问你们stackoverflowers:我在为任何CPU构建网站的过程中是做错了什么,还是解决方案可能存在于其他地方?我是否必须显式地将一些参数传递给

我对MSbuild不是很有经验,因此可能会忽略一些重要的内容。我有其他web应用程序(不是web站点),它们与相同的COM组件通信时没有任何问题,因此这只是web站点的问题。web应用程序的构建方式如下:

<MSBuild
      Projects="$(ProjectFile)"
      StopOnFirstFailure="true"
      Targets="ResolveReferences;_CopyWebApplication;_BuiltWebOutputGroupOutput"
      Properties="...Platform=AnyCPU..." />


在这里,我将平台作为属性传递,因此我只是猜测我需要类似的web站点。

使用3.5版本的MSbuild解决了这个问题。我使用的是4.0版本和3.5 toolsversion。由于某种原因,导致interop DLL构建在错误的平台上。然而,我不知道它为什么会导致这个问题。在3.5版本的项目中使用MSbuild 4.0时,我发现了几个奇怪的问题。如果有人能告诉我为什么会发生这些事情,我会很高兴的

<MSBuild
      Projects="$(ProjectFile)"
      StopOnFirstFailure="true"
      Targets="ResolveReferences;_CopyWebApplication;_BuiltWebOutputGroupOutput"
      Properties="...Platform=AnyCPU..." />