昨日、VS2010 Web パブリッシングの更新プログラムをインストールしましたが、WiX セットアップ プロジェクトを読み込もうとすると (ソリューション エクスプローラーですべてアンロードと表示されます)、次のエラーが表示されます。
インポートされたプロジェクト「PROJECTNAME.wpp.targets」が見つかりませんでした。宣言内のパスが正しいこと、およびファイルがディスク上に存在することを確認してください。C:\Program Files\MSBuild\Microsoft\VisualStudio\v10.5\Web\Microsoft.Web.Publishing.targets
PROJECTNAME は、.wixproj 拡張子なしのセットアップ wixproj ファイルへのパスです。プロジェクト ファイルを確認しましたが、wpp.targets ファイルへの参照はどこにもありません。その場所に空のターゲット ファイルを作成してみることにしたので、これだけを含むファイルを追加しました。
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
</Project>
しかし、まったく同じエラーが発生しました-ファイルが存在するにもかかわらず、例外が見つかりません!
次に、Microsoft.Web.Publishing.targets ファイルを調べて、「.wpp.targets」テキストを探したところ、次のようになりました。
<PropertyGroup Condition="'$(EnableWebPublishProfileFile)'=='true' And
'$(WebPublishProfileFile)' != '' And Exists($(WebPublishProfileFile)) ">
<WebPublishProfileCustomizeTargetFile Condition="'$(WebPublishProfileCustomizeTargetFile)'==''">
$([System.IO.Path]::ChangeExtension($(WebPublishProfileFile), '.wpp.targets'))
</WebPublishProfileCustomizeTargetFile>
...
したがって、PROJECTNAME.wpp.targets のファイル名を設定しているように見えますが、EnableWebPublishProfileFile プロパティが true に設定されている場合のみです。これを wixproj ファイルのメイン プロパティ グループに追加しました。
<EnableWebPublishProfileFile>False</EnableWebPublishProfileFile>
繰り返しますが、エラーにはまったく違いはありませんでした。私は今ここでアイデアを使い果たしています!
さらにアップデート
私は空のプロジェクトでこれをレポしようとしましたが (これまでのところ成功していません)、いじり回してエラーを Microsoft.Web.Publishing.targets ファイルの次の行 (186) に絞り込みました。
<Import Project="$(WebPublishPipelineCustomizeTargetFile)"
Condition="'$(WebPublishPipelineCustomizeTargetFile)' != ''"/>
これは、ファイルの先頭に設定されています。
<WebPublishPipelineCustomizeTargetFile
Condition="'$(WebPublishPipelineCustomizeTargetFile)'==''">
$(WebPublishPipelineProjectDirectory)\*.wpp.targets
</WebPublishPipelineCustomizeTargetFile>
これがどのように PROJECTNAME.wpp.targets に変更されるのかわかりませんか?
プロジェクトファイルでこれをオーバーライドしようとしましたが、やはり違いはありません。
次に、ターゲット ファイルの行に Exists() 条件を追加しました。現在、一部のプロジェクトは機能しており、他のプロジェクトは機能しておらず、(ビルド時に) エラーで失敗しています。
「DisableEscapeMSBuildVariable」パラメーターは、「ImportParametersFile」タスクではサポートされていません。パラメーターがタスクに存在し、それが設定可能なパブリック インスタンス プロパティであることを確認してください。
私の旅は続く…