Web部署项目是否适用于x86构建配置

时间:2010-06-04 14:12:14

标签: c# visual-studio-2008 .net-3.5 msbuild web-deployment-project

我需要构建一个网站和几个在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#)。然后,我使用Configuration Manager通过复制Any CPU配置来创建x86配置。我检查了属性页面,确保将新配置设置为构建到x86,并且确实如此。我没有错误地构建了解决方案。

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

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

WDP是否与x86 build兼容?

如果删除类库(和引用),解决方案(包括WDP)构建正常。

我在64位Windows 7专业版上使用安装了相应WDP的Visual Studio 2008 SP1。

2 个答案:

答案 0 :(得分: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>

现在保存文件并打开配置管理器(Build菜单&gt; Configuration Manager)并检查您的部署项目现在是否具有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并构建项目。

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

答案 1 :(得分:1)

试试这个

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

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

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