Msbuild 为任何CPU构建网站
我有一个.NET3.5网站项目,我正在VS2010中开发(最近从VS2008迁移过来),并使用MSBuild和TeamCity进行构建/部署。我正在使用Msbuild工具版本3.5。网站项目通过互操作DLL与几个COM组件进行通信。据我所知,这些互操作是由VisualStudio作为COM组件的包装器生成的。我的问题是,当使用Microsoft.WebDeployments.targets构建和部署应用程序时,我会收到一条运行时错误消息,上面说: 无法加载文件或程序集 “Interop.cvvToolkitLib”或其 依赖关系。有人试图 用不正确的代码加载程序 格式 在谷歌搜索类似的问题后,我发现很多帖子都说为“AnyCpu”构建应该解决这个问题,因为生成互操作的工具默认为x86 因此,我打开构建脚本并尝试将平台指定为AnyCpu: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
<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..." />