3

TFSビルドサーバーがあります(TFS用語ではビルドコントローラーと呼ばれていると思います)。いくつかのソリューションを構築してデプロイします。これらのソリューションの 1 つである .NET 4 フル プロファイルと x86 をターゲットとする Windows フォーム プロジェクトは、以前は Windows XP で正常に動作していましたが、現在は次のメッセージで実行に失敗しています。

*.exe は、Windows XP では有効な win32 アプリケーションではありません

3 か月前のビルドは正常に動作し、それ以降、ソース コードに関連する変更はありません。しかし、ビルド サーバーから新しいビルドを要求すると、結果の .exe (それをサポートするための多数の .dll を含む) は、Windows XP 32 ビットでは実行できません。同じビルドは、Windows 7 32 ビットおよび Windows 7 64 ビットで問題なく動作します。

私の推測では、過去 3 か月間にビルド サーバーにインストールされた何かが違いを生んでいると思われます。.NET 4.5、Visual Studio 2012 など、多くのものがインストールされています。それでも、4.0 をターゲットとするソリューションを変更するべきではありません。

何か案は?

4

5 に答える 5

5

.net 4.5 は .net 4.0 をアップグレードするため、ビルド サーバーに .net 4.5 がインストールされていて、.net 4.0 をターゲットにしている場合、これは XP にインストールした .net 4.0 とは異なります。XP に .net 4.5 をインストールすることはできません。このブログで詳しく説明します。

基本的に、XP をサポートしたい場合は、.net 4.5 / Visual Studio 2012 を使用できません (またはビルド マシンにインストールする必要があります)。

于 2013-05-03T10:05:30.193 に答える
1

MSDN フォーラムで、.NET 4.5 がインストールされたマシン上の .NET 4.0 は、.NET 4.5 がインストールされた .NET 4.0 とは異なるという古いホットな大きなトピックがありました。 .NET 4.5 をインストールし、別の開発およびテスト マシン/環境をマウントする必要がある

ただし、反対を主張するSOには多くの答えがあります。おそらく、それと矛盾する私の答えに反対票を投じた同じ著者からのものでしょう。たとえば、ここここここ

于 2013-05-03T17:10:56.490 に答える
1

これはおそらくOPにとっては遅すぎますが、私はこの問題に遭遇し、たまたまうまくいった修正を見つけました。プロジェクトをビルドすると、出力フォルダーに .exe.config ファイルが生成されます。この構成には、次のスタートアップ セクションがあります。

supportedRuntime version="v.4.0" sku=".NETFramework,Version=v4.5"

4.5 を 4.0 に変更したところ、プロジェクトは問題なく XP (Service Pack 2) で実行できるようになりました。私がリンクしているすべてのパッケージと dll は、4.0 用にビルドされています。ここでどちらが原因であるかを調べるために調べませんでしたが、構成ファイルが私が行っている依存性注入に関連しているように見えるため、Microsoft.Practices.Unity であると思われます。Visual Studio 2013 Update 4 を使用して Win7 でビルドします。

于 2015-06-10T22:25:07.227 に答える
0

Visual Studio 2010 を使用するようにプラットフォーム ツールセットを変更してみてください。

于 2013-05-03T09:22:02.093 に答える