代码之家  ›  专栏  ›  技术社区  ›  Greg B

Web部署项目是否使用x86生成配置

  •  4
  • Greg B  · 技术社区  · 15 年前

    我需要构建一个网站和它在x86配置中引用的几个DLL。到目前为止,我们一直在使用Web部署项目来创建结果站点的zip文件及其所有必需的文件。但是,我们需要继续使用wdps,它们似乎与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)的解决方案。然后,我使用配置管理器通过复制任意CPU配置来创建x86配置。我检查了属性页,确保将新配置设置为生成为x86,它是。我毫无错误地建立了解决方案。

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

    接下来,我添加一个类库,使用配置管理器为此库创建一个x86配置,为库添加一个对Web应用的引用,然后在release/x86中全部重建,我会收到与上面详细描述的相同的错误。

    WDPS与x86版本兼容吗?

    如果我移除类库(和引用),解决方案(包括WDP)就会构建良好。

    我使用的是64位Windows7Pro上安装了相应WDPS的Visual Studio2008 SP1。

    2 回复  |  直到 13 年前
        1
  •  4
  •   Greg B    14 年前

    开箱即用,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 建设项目。

    冲洗并重复释放和任何其他构建配置。

        2
  •  1
  •   arrowd    13 年前

    试试这个

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

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

    此命令将文件从bin\x86\debug复制到bin 它将与发布配置一起工作