【发布时间】:2011-01-01 02:54:35
【问题描述】:
我有一个使用一组 3rd 方 dll 的 Web 应用程序项目。问题是开发/登台环境是 32 位的,但生产环境是 64 位的。因此,我们每次要部署时都必须重新引用和构建解决方案。我现在想自动执行此操作,但不确定如何使用 MSBuild 进行操作?
所有其他 dll 都是相同的,只是 3 个 3rd 方 dll。
编辑
我已经取得了一些进展,但是遇到了一些运行时汇编问题。
我有 3 个 dll 文件,1.dll、2.dll、3.dll。每个文件版本为 5.1。对于 64 位 dll,名称完全相同,只是文件版本不同。我所做的,将每个重命名为 1.v5.dll、1.v6.dll 等。在我的项目文件中,我将每个 dll 引用如下:
<Reference Include="1.v5.dll" Condition="'$(Platform)'=='x86'">
<SpecificVersion>False</SpecificVersion>
<HintPath>bin\1.v5.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="1.v6.dll" Condition="'$(Platform)'=='x64'">
<SpecificVersion>False</SpecificVersion>
<HintPath>bin\1.v6.dll</HintPath>
<Private>False</Private>
</Reference>
这适用于 Visual Studio IDE,我的解决方案编译文件,但是当我去运行网站时,我收到以下错误...
“无法加载文件或程序集 '1.v5' 或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。
关于如何解决这个问题的任何想法?
【问题讨论】:
-
意识到它并不能回答你的问题,但是......你到底为什么要做这样的事情?尤其是在您的暂存环境中?
-
我们的本地和暂存环境都是32位机器,解决方案需要用32位dll编译。在我们的代码中,每个 dll(API) 都有不同的功能。然而,我们的生产环境是 64 位的,因此需要使用 64 位 dll 编译解决方案,并将这些文件复制到生产箱。每次我们想这样做时,我们都必须删除并重新引用 32/64 位 dll,这并不难,只是很痛苦。自动化这将是伟大的!
-
出现dll加载问题是因为你重命名了dll,例如msdn.microsoft.com/en-us/library/yx7xezcf.aspx
标签: c# visual-studio deployment msbuild