4

x86構成で参照するWebサイトといくつかの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#)を含むソリューションを作成しました。次に、構成マネージャーを使用して、AnyCPU構成をコピーしてx86構成を作成しました。プロパティページをチェックして、新しい構成がx86にビルドするように設定されていることを確認しました。エラーなしでソリューションを構築しました。

次に、Webアプリを右クリックして、コンテキストメニューからWDPを追加しました。WDPを右クリックして、プロジェクトファイルを編集しました。この時点で、AnyCPUの参照をx86に変更して、WDPがx86ビルドの条件を持つようにしました。Release / x86でソリューションを再構築しましたが、すべて正常に構築されています。

次に、クラスライブラリを追加し、構成マネージャーを使用してこのライブラリのx86構成を作成し、ライブラリのWebアプリへの参照を追加してから、Release / x86ですべてを再構築すると、上記と同じエラーが発生します。

WDPはx86ビルドと互換性がありますか?

クラスライブラリ(および参照)を削除すると、ソリューション(WDPを含む)は正常に構築されます。

64ビットWindows7Proで、適切なWDPがインストールされたVisual Studio2008SP1を使用しています。

4

2 に答える 2

4

箱から出して、Web配置プロジェクト(WDP)はx86またはx64ビルド構成では機能しません。これは、これらの構成の1つで構築されたWebアプリケーションが、結果のアセンブリを別の場所に出力し、WDPがそこでDLLを探すことを知らないためです。

WDPをx86構成で動作させるために必要なことがいくつかあります。

まず、WDPにはおそらくx86構成がないため、作成する必要があります。Visual StudioのXMLエディター(または任意のテキストエディター)を使用して展開プロジェクトを編集します。ファイルの上部近くに、次のような<propertyGroup>条件のタグ(通常は2番目のタグ)が表示されます。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アプリケーションプロジェクトを保存して閉じ、リロードします。これで、WDPがDLLを検出する予定の場所にDLLを配置するようにWebアプリケーションに指示しました。

ビルド構成をに設定しx86、プロジェクトをビルドします。

リリースおよびその他のビルド構成について、すすぎ、繰り返します。

于 2010-11-03T13:55:51.257 に答える
1

これを試して

このコマンドをWebプロジェクトのコンパイル後のイベントに配置します

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

このコマンドは、ファイルをbin \ x86\Debugからbinにコピーします。リリース構成で機能します。

于 2012-05-17T16:11:35.260 に答える