2016-12-08 4 views
0

Click-Onceの公開を使用しようとしています。問題は、開発用コンピュータで使用している接続文字列が正しくありません私が本番環境で使用するもの。 Configファイルが初めて公開されることを避けるにはどうすればよいですか?私は出版物リストにそれを含めないことをプロパティで試みましたが、それを行うオプションはありません。Click-Onceを使用した公開で設定ファイルを無効にする

+0

私はプロジェクトの関係者でもありませんが、ビルトインのweb.configトランスフォーメーションエンジンのように、app.config変換を適用するビジュアルスタジオ(ビールのように無料)のプラグインがあります。これはSlowCheetahと呼ばれ、ビルドプロファイルに基づいてさまざまな設定を行うことができます。 https://marketplace.visualstudio.com/items?itemName=WillBuikMSFT.SlowCheetah-XMLTransformsmたとえば、リリース配備を行うときに、ダミー設定ファイルを公開することができます。 – Tommy

答えて

0

設定ファイルは、アドインで使用されるすべての必要な設定を保存するため、デプロイメントの一部です。

アドインが本番環境にある場合はHOSTURL=http://example.com、アドインを開発する場合はHOSTURL=http://localhostと設定してください。人間が関与することなく自動的にこのすべてを期待しています。

その後、あなたはこれらのいずれかを試してください可能性があります

[1]値にClickOnceLocationを依存ClickOnceLocationし、使用設定を確認してみます。 には、Addinを開発/デバッグしている間に"Debug"が含まれていると仮定します。

//CodeBase is the location of the ClickOnce deployment files 
Uri uriCodeBase = new Uri(assemblyInfo.CodeBase); 
string ClickOnceLocation = Path.GetDirectoryName(uriCodeBase.LocalPath.ToString()); 
if(ClickOnceLocation.Contains("Debug")) 
{ 
    URL = "http://localhost";  
} 
else 
{ 
    URL = //from app.config 
} 

[2] Updating the app.config by using build configurations

をパブリッシュ本番サーバに値を持つ別のファイルが中に拾っ得られるように使用することができますいくつかのトリックがあります。

ローカル展開/デバッグ用に2つの設定ファイルを用意し、実際の公開バージョンまたは本番版のアプリケーション用に2つの設定ファイルを用意することができます。デバッグ設定ファイルはlocalhostサーバを指すことができますが、実際に公開された設定ファイルは実サーバを指すことができます。次に、アクティブなビルド構成に応じて適切な設定ファイルが選択されるように、ビルド設定を構成することができます。

2つの異なるapp.configファイルをプロジェクトに追加するには、プロジェクトファイルのapp.configへの参照を更新できます。 App.configファイルは、以下のXMLでプロジェクトファイル(vbprojまたはcsproj)で定義されている:

<ItemGroup> 

… 

<None Include=”app.config” /> 

</ItemGroup> 

App.configファイルノードと共にItemGroup内の他のノードが存在してもよいです。ちょうどこのItemGroupノードからApp.configファイルを削除し、次のXMLを持つノードの下に新しいItemGroupを作成します。

<ItemGroup Condition=” ‘$(Configuration)|$(Platform)’ == ‘Debug|AnyCPU’ “> 
<None Include=”app.config” /> 
</ItemGroup> 

<ItemGroup Condition=” ‘$(Configuration)|$(Platform)’ == ‘Release|AnyCPU’ “> 
<None Include=”publishedapp.config” /> 
</ItemGroup> 

これは基本的にアクティブなコンフィギュレーションに設定されている場合、通常のapp.configファイルが使用されることを意味しますプロジェクトの "公開された"サブフォルダに格納されている実際のプロダクション変数を含む、変更されたapp.configは、アクティブな構成が "リリース"に設定されている場合に使用されます。

定義済みの他のビルド構成と一致するようにItemGroup条件を変更できます。 1つの可能性は、「リリース」構成に基づいて定義された別の「公開」構成を持つことですが、実際にアプリケーションを公開する場合にのみ使用されます。

このプロセスの追加免責事項は、VSプロジェクトシステム自体とデザイナーがapp.configファイルを認識していないことです。 Visual Studioでは、元のファイルのみが認識されます。プロダクション環境の値を含む変更されたapp.configは、msbuildプロセスでのみ使用されます。したがって、設定デザイナを使用してメインのapp.configを更新すると、変更されたapp.configは更新されず、ファイルを手動で更新する必要があります。

プロジェクトを適切に設定したら、さまざまなビルド構成を切り替えて設定ファイルを変更し、Visual Studioからアプリケーションを公開し、更新および再署名プロセスを実行する必要がありません。

+0

すべての回答者に大きな感謝、私はものを勉強し、それらに応じてマークする – burech

関連する問題