4

我需要构建一个网站和几个在 x86 配置中引用的 DLL。迄今为止,我们一直在使用 Web 部署项目来创建结果站点的 Zip 文件及其所有必需文件。我们需要继续使用 WDP,但是,它们似乎在 x86 构建配置方面存在问题。

在我的项目中,当我在 Release/x86 中构建解决方案时,出现以下错误。

           Description                              File                           Line   Column   Project
Error  80  Could not load type 'WwwRooot.Default'.  /WwwRooot.csproj/Default.aspx  1      1        WwwRooot.csproj_deploy

没有来自 Web 应用程序或任何引用的类库的构建错误或警告。

我认为这可能是我正在从事的项目的特定内容,因此为了证明自己错了,我创建了一个包含 Web 应用程序 (c#) 的解决方案。然后我使用配置管理器通过复制 Any CPU 配置来创建 x86 配置。我检查了属性页面并确保新配置设置为构建为 x86,并且确实如此。我构建了没有错误的解决方案。

接下来,我右键单击 Web 应用程序并从上下文菜单中添加 WDP。右键单击 WDP 并编辑项目文件。此时我将 AnyCPU 的所有引用更改为 x86,以便 WDP 具有 x86 构建的条件。我在 Release/x86 中重建了解决方案,一切都很好。

接下来,我添加一个类库,使用配置管理器为该库创建一个 x86 配置,为该库添加对 Web 应用程序的引用,然后在 Release/x86 中重建所有内容,我收到与上述相同的错误。

WDP 是否与 x86 构建兼容?

如果我删除类库(和引用),则解决方案(包括 WDP)构建得很好。

我在 64 位 Windows 7 Pro 上使用安装了适当 WDP 的 Visual Studio 2008 SP1。

4

2 回答 2

4

开箱即用的 Web 部署项目 (WDP) 不适用于 x86 或 x64 构建配置。这是因为在其中一种配置下构建的 Web 应用程序将生成的程序集输出到不同的位置,而 WDP 不知道在那里查找 DLL。

要使 WDP 与您的 x86 配置一起工作,您需要做一些事情。

首先,您的 WDP 可能没有 x86 配置,您需要创建一个。使用 Visual Studio(或任何文本编辑器)中的 XML 编辑器编辑部署项目,在文件顶部附近将看到一个<propertyGroup>标签(通常是第二个标签),其条件Debug|AnyCPU如下:

  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <OutputPath>.\Debug</OutputPath>
    <EnableUpdateable>true</EnableUpdateable>
    <UseMerge>true</UseMerge>
  </PropertyGroup>

复制整个标签并将配置更改为Debug|x84

  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
    <DebugSymbols>true</DebugSymbols>
    <OutputPath>.\Debug</OutputPath>
    <EnableUpdateable>true</EnableUpdateable>
    <UseMerge>true</UseMerge>
  </PropertyGroup>

现在保存文件并打开配置管理器(构建菜单 > 配置管理器)并检查您的部署项目现在是否具有 x86 配置。

现在使用文本编辑器编辑 Web 应用程序项目文件并在配置中找到该outputPath元素 。Debug|x86它的值应为Bin\x86\Debug。这需要更改为Bin

 <!-- Before -->
 <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
    <OutputPath>Bin\x86\Debug\</OutputPath>

 <!-- After -->
 <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
    <OutputPath>Bin\</OutputPath>

保存、关闭并重新加载您的 Web 应用程序项目。我们现在指示 Web 应用程序将其 DLL 放在 WDP 期望找到它们的位置。

将构建配置设置为x86并构建项目。

冲洗并重复发布和您可能拥有的任何其他构建配置。

于 2010-11-03T13:55:51.257 回答
1

尝试这个

将此命令放在 Web 项目的编译后事件中

xcopy "$(TargetDir)*.*" "$(TargetDir)..\..\" /Y

此命令会将文件从 bin\x86\Debug 复制到 bin 它将与发布配置一起使用

于 2012-05-17T16:11:35.260 回答