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

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

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

ビルド条件

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■95744 / inTopicNo.1)  ビルド条件
  
□投稿者/ 91 (1回)-(2020/09/15(Tue) 11:04:52)

分類:[C#] 

プラットフォームをx86からx64または、x64からx86に変更すると、ソースコードを変更していないのにビルドされてしまいます。
また、バッチビルドで全てをリビルドした後(x86とx64をリビルド)で、デバッグ開始した時も、実行前にビルドが行われてしまいます。
何故なのでしょうか?

引用返信 編集キー/
■95745 / inTopicNo.2)  Re[1]: ビルド条件
□投稿者/ kiku (195回)-(2020/09/15(Tue) 11:19:49)
No95744 (91 さん) に返信
> プラットフォームをx86からx64または、x64からx86に変更すると、ソースコードを変更していないのにビルドされてしまいます。
> また、バッチビルドで全てをリビルドした後(x86とx64をリビルド)で、デバッグ開始した時も、実行前にビルドが行われてしまいます。
> 何故なのでしょうか?

ぐぐっただけですが、下記が参考になりそうです。
https://social.msdn.microsoft.com/Forums/vstudio/ja-JP/0b6215bf-53cc-430b-8ea9-4876fa484d31/234553489226178123951249912523124891237512390123751241412358?forum=csharpgeneralja
引用返信 編集キー/
■95746 / inTopicNo.3)  Re[2]: ビルド条件
□投稿者/ 91 (2回)-(2020/09/15(Tue) 13:18:56)
No95745 (kiku さん) に返信

回答ありがとです。
自分でぐぐって見つけられなかったので投稿しました。

参考に、実施した結果を報告いたします。
バッチビルドでだけの確認ですが、
プラットフォームをx86にして、バッチビルドで x86にだけチェックして全てをリビルド後、デバッグ開始でビルドされず実行されました。
同様に、プラットフォームを x64にだけチェックして全てをリビルド後、デバッグ開始でもビルドされず実行されました。

プラットホームの変更があった時に発生する現象のように思えます。
引用返信 編集キー/
■95747 / inTopicNo.4)  Re[1]: ビルド条件
□投稿者/ 魔界の仮面弁士 (2836回)-(2020/09/15(Tue) 13:36:50)
No95744 (91 さん) に返信
> プラットフォームをx86からx64または、x64からx86に変更すると、ソースコードを変更していないのにビルドされてしまいます。

ソリューションとプロジェクトのいずれで変更していますか?

ソースコード自体は変更していなかったとしても、
ソリューションで変更すると、.sln のファイル更新日が書き換わり、
プロジェクトで変更すると、.csproj が書き換わるといった事が起こりますので、
これらの変化を元に、再ビルドの必要性が判定されると思います。

そしてバッチビルドした場合は、そのプロジェクトの変更が確定するので、
こうしたファイルの再編集(または更新日時の刷新)があるまでは、
再ビルドなしで実行されるようになると思います。
引用返信 編集キー/
■95748 / inTopicNo.5)  Re[1]: ビルド条件
□投稿者/ WebSurfer (2103回)-(2020/09/15(Tue) 13:39:47)
No95744 (91 さん) に返信

> ソースコードを変更していないのにビルドされてしまいます。

想像ですが、PE ヘッダ情報を書き換える必要があるからではないかと思います。

PE ヘッダとは何かは以下の記事が参考になると思います。

Part 2. .NET Framework 2.0 アプリケーションの 64 ビット対応
https://docs.microsoft.com/ja-jp/archive/blogs/nakama/part-2-net-framework-2-0-64

上の記事の "[Step. 10] 動作モードやヘッダフラグの確認方法" セクションに PE ヘッダ
を調べる方法が書いてありますので、チェックしてみてははいかがでしょう?

引用返信 編集キー/
■95749 / inTopicNo.6)  Re[2]: ビルド条件
□投稿者/ 91 (3回)-(2020/09/15(Tue) 14:56:25)
No95747 (魔界の仮面弁士 さん) に返信
> ソースコード自体は変更していなかったとしても、
> ソリューションで変更すると、.sln のファイル更新日が書き換わり、
> プロジェクトで変更すると、.csproj が書き換わるといった事が起こりますので、
> これらの変化を元に、再ビルドの必要性が判定されると思います。
>
> そしてバッチビルドした場合は、そのプロジェクトの変更が確定するので、
> こうしたファイルの再編集(または更新日時の刷新)があるまでは、
> 再ビルドなしで実行されるようになると思います。

ソリューションプラットフォームをx86とx64へ変更しても、
.sln と .csproj は書き換わっていませんでした。
引用返信 編集キー/
■95750 / inTopicNo.7)  Re[2]: ビルド条件
□投稿者/ 91 (4回)-(2020/09/15(Tue) 15:12:14)
No95748 (WebSurfer さん) に返信
> 想像ですが、PE ヘッダ情報を書き換える必要があるからではないかと思います。
>
> PE ヘッダとは何かは以下の記事が参考になると思います。
>
> Part 2. .NET Framework 2.0 アプリケーションの 64 ビット対応
> https://docs.microsoft.com/ja-jp/archive/blogs/nakama/part-2-net-framework-2-0-64
>
> 上の記事の "[Step. 10] 動作モードやヘッダフラグの確認方法" セクションに PE ヘッダ
> を調べる方法が書いてありますので、チェックしてみてははいかがでしょう?
>

PEヘッダ情報の書き換えによるビルドへの影響は、.NET Framework 2.0 でのみ発生するのですかね。

情報源が、.NET Framework 2.0 となっていたので、ダメもとで、
.Net Framework 4.0 と .Net Framework 4.0 Client Profile でやってみたら、
プラットフォームをx86とx64へ変更しても、バッチビルド後でも、ビルドされなくなりました。

引用返信 編集キー/
■95815 / inTopicNo.8)  Re[3]: ビルド条件
□投稿者/ 91 (5回)-(2020/09/28(Mon) 19:20:01)
解決!
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ