首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为AnyCpu构建网站

为AnyCpu构建网站
EN

Stack Overflow用户
提问于 2010-12-14 09:12:30
回答 1查看 314关注 0票数 1

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

无法加载文件或程序集“Interop.cvvToolkitLib”或其依赖项之一。试图加载格式不正确的程序。

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

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

代码语言:javascript
复制
<Platform>AnyCPU</Platform>

还是同样的问题。更多的googling暗示它可能是"AnyCpu“或”任何CPU“,所以我尝试了两者。还是没有运气。其他论坛帖子则提出这样的建议:

代码语言:javascript
复制
<ItemGroup>
    <ConfigurationToBuild Include="Release|Any CPU">
      <FlavorToBuild>Release</FlavorToBuild>
      <PlatformToBuild>Any CPU</PlatformToBuild>
    </ConfigurationToBuild>
  </ItemGroup>

代码语言:javascript
复制
<PlatformTarget>AnyCPU</PlatformTarget>

错误保持不变。所以我对你的问题是:我是不是做错了什么让网站为任何CPU构建,或者解决方案可能在其他地方?我是否必须将一些参数显式地传递给<CallTarget Targets="Build"/>

我对MSbuild不是很有经验,所以我可能会忽略一些重要的事情。我有其他的web应用程序(不是网站)与相同的COM组件通信,没有任何问题,所以这只是一个网站的问题。web应用程序的构建方式如下:

代码语言:javascript
复制
<MSBuild
      Projects="$(ProjectFile)"
      StopOnFirstFailure="true"
      Targets="ResolveReferences;_CopyWebApplication;_BuiltWebOutputGroupOutput"
      Properties="...Platform=AnyCPU..." />

在这里,我传递平台作为一个属性,所以我只是猜测我需要一些类似的网站。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-12-16 08:41:36

使用3.5版本的MSbuild解决了这一问题。我使用的是带有3.5工具版本的4.0版本。由于某些原因,导致interop构建在错误的平台上。不过,我不知道为何会引起这个问题。在3.5个项目中使用MSbuild 4.0时,我已经看到了一些奇怪的问题。如果有人能告诉我这些事情发生的原因,我会很高兴的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4437509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档