16

私は、.NET プロジェクト (過去数年間取り組んできた) を作成してコンパイルするゲーム開発 IDE を作成しており、それを更新して、Windows/Visual Studio だけでなく、 Linux/MonoDevelop 向け (.NET 向けの驚くほど単純なプロセスですが、まだ微調整が必​​要です)。

この一環として、依存する DLL 名を <dllmap> 要素を使用して Linux の依存関係の名前にマップするために、app.config ファイルの生成を開始する必要があることがわかりました。app.config ファイルを出力名 app.exe.config にコピーする責任があるのは誰なのか、私は混乱しています。Visual Studio プロジェクトでは、app.config のビルド アクションは通常 "None" に設定されているようで、その設定はどこにもコピーされないことを示していますが、Visual Studio がプロジェクトをコンパイルすると app.exe.config (私は時々これが信頼できないことに気づきましたが)。MSBuild を使用して (デバッグ目的で) IDE によって生成されたソリューション ファイルをビルドすると、MSBuild は app.config を app.exe.config にコピーします。しかし、CSharpCodeProvider.CompileAssemblyFromFile を使用してプロジェクトをコンパイルすると、(自然に) コンパイルされません。ソースコードとして含まれている構成ファイルが好きではありません (「app.config(1,1): エラー CS0116: 名前空間には、フィールドやメソッドなどのメンバーが直接含まれていません」)。入力として含めない場合は出力します。app.config を app.exe.config に個別にコピーするのは私の責任ですか、それともこれを行うより標準的な方法はありますか?

最初の *.config ファイルを取得するのはハードワイヤードですか? 私の IDE では、app.config ファイルの名前が変更されるか、別のファイルが追加されることが考えられます (Visual Studio の場合と同様)。IDE が構成ファイルに対してこの秘密のアクションを持っているのは奇妙に思えます (構成ファイルに対する特別なアクションも見つからなかったため、MonoDevelop はこの点で同様に動作すると思います)。この秘密のアクションが適用されるファイルをどのように選択するかさえわかりません。

4

5 に答える 5

8

注文:

  1. プロジェクト ディレクトリにある、ビルド アクションが None の最初の app.config ファイル
  2. プロジェクト ディレクトリにある、Content ビルド アクションを含む最初の app.config ファイル
  3. サブディレクトリ内の None ビルド アクションを含む最初の app.config ファイル
  4. サブディレクトリ内の Content ビルド アクションを含む最初の app.config ファイル

msbuild/xbuild では、$(AppConfig) プロパティを設定してこれをオーバーライドすることもできます。

于 2010-03-30T13:24:55.617 に答える
8

C# コンパイラは構成ファイルをまったく気にしません。ビルド環境 (MSBuild および VS) は、そのファイル自体をコピーします。

于 2009-03-30T14:51:29.877 に答える
1

Visual Studio は構成ファイルを検証することにも注意してください。

于 2009-03-31T09:09:12.640 に答える
1

MSBuild がコピーを担当していると思います。ストック .target ファイルを掘り下げると、おそらく対応するディレクティブが見つかるでしょう。VS 自体はコピーしません。

于 2009-03-30T15:09:24.047 に答える