0

ClickOnce公開を使用する既存のWindowsフォームクライアントアプリケーションにapp.configトランスフォームを追加しましたが、今は公開しません。エラーメッセージ:Winforms ClickOnce公開がapp.config変換で失敗する

"OBJ \リリース\ Client.csproj.App.config、OBJ \リリース\ MyAppName.exe.config" は "GenerateApplicationManifest" タスクの "のConfigFile" パラメータに無効な値です。複数の項目タイプのパラメータに を渡すことはできません「Microsoft.Build.Framework.ITaskItem」

私は(プロジェクトのプロパティ>セキュリティ)「ClickOnceのセキュリティ設定を有効にする」のチェックを外した場合、プロジェクトをビルドおよびVisualから実行されますこのエラーは発生しませんが、ClickOnceを使用して公開しようとするとエラーが返されます。セキュリティを有効にすると、プロジェクトはまったく構築されません。いずれにしても、エラーは同じです。

app.configは「常にコピーする」に設定されています。

Clickonce証明書を削除して、症状に差異のない新しい証明書をインストールしようとしました。

これはWindowsフォームアプリケーションであり、Webアプリケーションではありません。変換はConfiguration Transform拡張子を使用して作成されました(SlowCheetahと同じように動作します)。私は他のアプリケーションのためにこの設定を使いましたが、これまでのところ、このアプリと成功したものとの間の設定に違いはありませんでした。

.csprojファイルのこのセクションでは、問題に関連すると思わ:

<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Web\Microsoft.Web.Publishing.Tasks.dll" /> 
     <Target Name="AfterCompile" Condition="Exists('App.$(Configuration).config')"> 
     <!--Generate transformed app config in the intermediate directory--> 
     <TransformXml Source="App.config" Destination="$(IntermediateOutputPath)$(TargetFileName).config" Transform="App.$(Configuration).config" /> 
     <!--Force build process to use the transformed configuration file from now on.--> 
     <ItemGroup> 
      <AppConfigWithTargetPath Remove="App.config" /> 
      <AppConfigWithTargetPath Include="$(IntermediateOutputPath)$(TargetFileName).config"> 
      <TargetPath>$(TargetFileName).config</TargetPath> 
      </AppConfigWithTargetPath> 
     </ItemGroup> 
     </Target> 

別のポストは、ItemGroupノードを削除する提案しました。これを行うと、プロジェクトはVSで構築され、実行され、テスト場所に公開することができますが、app.configトランスフォームは行われません。

+0

更新:パブリッシュをタイムリーに行うため、基本的なapp.configの代わりにトランスフォームを削除しました。私はまだ元の問題を解決し、変換を使用することを好むでしょう。 – jshockwave

答えて

0

解決済み:これらの症状は、Microsoft.BclがconfigトランスフォームとClickOnceパブリッシングをうまく使用していないことが原因です。このアプリは、古いXPマシンで実行しているときに非同期/待機パターンを使用するためにBclを使用して.NET 4で作成されました。私たちのユーザーはその後Windows 7 & 10にアップグレードしました。そのため、アプリケーションを.NET 4.5.2にアップグレードしてBclパッケージを削除することができました。 Bclがなくなり、問題は完全に解決されました。 (Bclがconfigの変換とクリックで正しく動作するようにするには何らかのハックがあるかもしれませんが、私はアップグレードすることができたので、それ以上追求していません)。

関連する問題