我有一個.Net 3.5網站項目,我在VS2010(最近移植了VS2008)以及用MSBuild和TeamCity構建/部署。我使用Msbuild工具版本3.5。該網站項目通過Interop-dll與一些COM組件進行通信。據我所知,這些interop是由Visual Studio生成的COM組件的包裝。我的問題是,當應用程序生成和使用Microsoft.WebDeployments.targets部署我得到一個運行時錯誤消息說:構建AnyCpu的網站
無法加載文件或程序集 「Interop.cvvToolkitLib」或它 的一個依賴。試圖對 加載具有不正確的 格式的程序。
在Google搜索到類似問題後,我發現很多帖子都說「AnyCpu」的構建應該解決這個問題,因爲生成interops的工具默認爲x86。
所以,我打開我的構建腳本,並試圖指定平臺AnyCpu:
<Platform>AnyCPU</Platform>
還是同樣的問題。更多的谷歌暗示它可能是「AnyCpu」或「任何CPU」,所以我嘗試了兩種。仍然沒有運氣。其他論壇的帖子建議這樣的事情,而不是:
<ItemGroup>
<ConfigurationToBuild Include="Release|Any CPU">
<FlavorToBuild>Release</FlavorToBuild>
<PlatformToBuild>Any CPU</PlatformToBuild>
</ConfigurationToBuild>
</ItemGroup>
或
<PlatformTarget>AnyCPU</PlatformTarget>
誤差保持不變。所以我對你的stackoverflowers的問題是:我在爲任何CPU構建網站時做了什麼錯誤的事情,還是解決方案可能在其他地方?我是否必須明確地將一些參數傳遞給<CallTarget Targets="Build"/>
?
我對MSbuild不是很有經驗,所以我可能會忽略一些重要的東西。我有其他的Web應用程序(不是網站),它們與相同的COM組件進行通信時沒有任何問題,所以這只是網站的一個問題。 Web應用程序是建立這樣的:
<MSBuild
Projects="$(ProjectFile)"
StopOnFirstFailure="true"
Targets="ResolveReferences;_CopyWebApplication;_BuiltWebOutputGroupOutput"
Properties="...Platform=AnyCPU..." />
這裏我通過平臺作爲屬性,所以我只是猜測,我需要的網站類似的東西。