C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ツリー一括表示

.configファイルを出力しない方法 /虚炉太郎 (17/11/14(Tue) 12:51) #85682
Re[1]: .configファイルを出力しない方法 /WebSurfer (17/11/14(Tue) 13:47) #85685
│└ Re[2]: .configファイルを出力しない方法 /虚炉太郎 (17/11/14(Tue) 14:28) #85688
│  ├ Re[3]: .configファイルを出力しない方法 /とっちゃん (17/11/14(Tue) 15:07) #85689
│  ├ Re[3]: .configファイルを出力しない方法 /WebSurfer (17/11/14(Tue) 18:04) #85693
│  │└ Re[4]: .configファイルを出力しない方法 /魔界の仮面弁士 (17/11/14(Tue) 18:50) #85694
│  │  └ Re[5]: .configファイルを出力しない方法 /WebSurfer (17/11/15(Wed) 11:58) #85704
│  └ Re[3]: .configファイルを出力しない方法 /shu (17/11/14(Tue) 20:06) #85695
Re[1]: .configファイルを出力しない方法 /kiku (17/11/14(Tue) 17:54) #85692


親記事 / ▼[ 85685 ] ▼[ 85692 ]
■85682 / 親階層)  .configファイルを出力しない方法
□投稿者/ 虚炉太郎 (1回)-(2017/11/14(Tue) 12:51:49)

分類:[.NET 全般] 

Visual Studio 2015を使っています。

対象のフレームワークを
.NET 4から.NET 4.5に上げたところ、
ビルド時に、EXEファイルとともに
.exe.configファイルというものが生成されるようになりました。

これが生成されないようにしたいのですが
どのようにすれば良いですか?





[ □ Tree ] 返信 編集キー/

▲[ 85682 ] / ▼[ 85688 ]
■85685 / 1階層)  Re[1]: .configファイルを出力しない方法
□投稿者/ WebSurfer (1347回)-(2017/11/14(Tue) 13:47:24)
No85682 (虚炉太郎 さん) に返信

何を作っているんですか?

web アプリでなければ、以下の記事の最初の方に書いてあるように、App.config が
存在している場合、プロジェクトをビルドするとそういうファイルが生成されるはず
です。

「アプリケーション構成ファイル」を使用して設定を読み込む
https://dobon.net/vb/dotnet/programing/appconfigfile.html

なので、

> 対象のフレームワークを
> .NET 4から.NET 4.5に上げたところ、

という理由ではありません。

> これが生成されないようにしたいのですが
> どのようにすれば良いですか?

App.config を作らなければ(それが現実的かどうかは分かりませんが)、xxx.exe.config
は生成されないと思います。
[ 親 85682 / □ Tree ] 返信 編集キー/

▲[ 85685 ] / ▼[ 85689 ] ▼[ 85693 ] ▼[ 85695 ]
■85688 / 2階層)  Re[2]: .configファイルを出力しない方法
□投稿者/ 虚炉太郎 (2回)-(2017/11/14(Tue) 14:28:25)
確認しましたところ、
理由は分かりませんが、.NET 4で作ってきた
プログラムは全てapp.configが生成されていませんでした。

具体的には
対象のフーレムワーク
.NET Framework 4 Client Profile

で、
Visual Studio2010で作った
プロジェクトを引き継いで使っています。

app.configを出さないようにするにはどうしたら良いですか?
そして出さなかった場合、どういうデメリットがあるのでしょうか?
 
[ 親 85682 / □ Tree ] 返信 編集キー/

▲[ 85688 ] / 返信無し
■85689 / 3階層)  Re[3]: .configファイルを出力しない方法
□投稿者/ とっちゃん (472回)-(2017/11/14(Tue) 15:07:50)
No85688 (虚炉太郎 さん) に返信
> 確認しましたところ、
> 理由は分かりませんが、.NET 4で作ってきた
> プログラムは全てapp.configが生成されていませんでした。
>
> 具体的には
> 対象のフーレムワーク
> .NET Framework 4 Client Profile
>
> で、
> Visual Studio2010で作った
> プロジェクトを引き継いで使っています。
>
> app.configを出さないようにするにはどうしたら良いですか?
> そして出さなかった場合、どういうデメリットがあるのでしょうか?
>  

.NET 4 時代にはなく、今はあるということであれば

https://msdn.microsoft.com/ja-jp/library/w4atty68(v=vs.110).aspx

にある、supportedRuntime 要素ですかね?

であれば、上記と

https://msdn.microsoft.com/ja-jp/library/jj152935(v=vs.110).aspx

を読んでもらえばと思いますが、基本的には省略できません。

[ 親 85682 / □ Tree ] 返信 編集キー/

▲[ 85688 ] / ▼[ 85694 ]
■85693 / 3階層)  Re[3]: .configファイルを出力しない方法
□投稿者/ WebSurfer (1349回)-(2017/11/14(Tue) 18:04:28)
No85688 (虚炉太郎 さん) に返信

> app.configを出さないようにするにはどうしたら良いですか?

何故そうする必要があるかを書いてもらうと何か代案が出てくるかもしれません。

> そして出さなかった場合、どういうデメリットがあるのでしょうか?

接続文字列とか、アプリを動かすのに必要な情報が入っていると、削除するのは
完全に NG でしょう。

supportedRuntime 要素だけなら、なくても動くかもしれないが、保証の限りでは
ないということだと思います。
[ 親 85682 / □ Tree ] 返信 編集キー/

▲[ 85693 ] / ▼[ 85704 ]
■85694 / 4階層)  Re[4]: .configファイルを出力しない方法
□投稿者/ 魔界の仮面弁士 (1460回)-(2017/11/14(Tue) 18:50:25)
2017/11/14(Tue) 18:58:37 編集(投稿者)

No85693 (WebSurfer さん) に返信
> 接続文字列とか、アプリを動かすのに必要な情報が入っていると、削除するのは
> 完全に NG でしょう。

接続文字列などといった「設定」タブなどで指定される情報――具体的には

/configuration/configSections/sectionGroup[@name='userSettings']/section
/configuration/configSections/sectionGroup[@name='applicationSettings']/section
/configuration/connectionStrings/add

のエントリーの内容――については、Settings.Designer.cs 内に
『既定値』として、DefaultSettingValue 属性で埋め込まれるため、
*.exe.config が無かったとしても、既定値設定で動作しますね。
(app.config まで削除してしまうというのは、
 Settings.Designer.cs すら作られなくなるので NG ですが)


> supportedRuntime 要素だけなら、なくても動くかもしれないが、保証の限りでは
> ないということだと思います。

コンピューター全体に適用される設定項目については、machine.config で代用できますが、
流石に assemblyBinding、supportedRuntime(旧 requiredRuntime) の類は
アプリケーション単位で指定しないと意味が無い項目ですし、
特に理由が無い限り、削除すべきではないでしょうね。

.exe.manifest と違って、exe 内にリソースとして
埋め込めるものでもありませんし。(.exe.local もそうかな)
[ 親 85682 / □ Tree ] 返信 編集キー/

▲[ 85694 ] / 返信無し
■85704 / 5階層)  Re[5]: .configファイルを出力しない方法
□投稿者/ WebSurfer (1351回)-(2017/11/15(Wed) 11:58:44)
No85694 (魔界の仮面弁士 さん) に返信

> 接続文字列などといった「設定」タブなどで指定される情報

例えば、コンソールアプリに Visual Studio のウィザードを使って ADO.NET Entity
Data Model を追加した場合、接続文字列は App.config に設定され、設定ファイルは
生成されないというケースもあります。
[ 親 85682 / □ Tree ] 返信 編集キー/

▲[ 85688 ] / 返信無し
■85695 / 3階層)  Re[3]: .configファイルを出力しない方法
□投稿者/ shu (1065回)-(2017/11/14(Tue) 20:06:14)
No85688 (虚炉太郎 さん) に返信

既に回答があるように
supportedRuntime
の設定が標準で行われるようになったということです。
これはFrameworkのバージョンのどれに対応していますよ
という情報でこの設定より前のバージョンのFrameworkしか
入っていないと動かないようにするものだったと思います。
実行環境にインストールされているFrameworkのバージョンがビルドしたものと
合っていればapp.configを除外してしまっても問題ないでしょう。
[ 親 85682 / □ Tree ] 返信 編集キー/

▲[ 85682 ] / 返信無し
■85692 / 1階層)  Re[1]: .configファイルを出力しない方法
□投稿者/ kiku (21回)-(2017/11/14(Tue) 17:54:39)
[ 親 85682 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -