4

そこで、開発チームをVS2008にアップグレードしたいと思います。企業として、私たちはまだ3.5ランタイムを展開していません。

いくつかの読書から、VS2008をインストールすると、いくつかの新しいAPIを含む.net 2.0 SP1が自動的に提供されるようです。また、2.0ランタイムをターゲットにすると、2.0SP1が想定されます。

ただし、SP1がユーザーに公開されていない場合、実行時の中断につながります。

  1. とにかくVSターゲットdotnet2.0(SP1ではない)を持つことはありますか?
  2. 開発者がローカルで正常にコンパイルおよび実行されるが本番環境で爆発するAPIを使用しないように、この問題に対する他の解決策はありますか?

fxcopがこれをチェックしているようですが、この問題にはもっと確実な解決策が必要です。

4

2 に答える 2

1

これは、難しい場合も簡単な場合もあります。両方のルートに行きました:

  1. 簡単な方法: .Net 2.0 のみがインストールされたビルド サーバーを確立します。チェックイン時にビルドが実行されるように自動化します (CruiseControl.Net を使用します)。プロジェクトをビルドするには、コマンド プロンプトから MSBuild を使用する必要があります。

  2. 3.5 がインストールされているマシンでは、.Net 2.0 フレームワーク ディレクトリから MSBuild を実行した場合でも、MSBuild ツールの多くが置き換えられます。これを回避するには、.Net 2.0 ランタイムのみの継続使用を強制するアプリケーションを作成する必要があります。これは簡単ではありません。プロジェクトを直接読み込み、Microsoft.Build.* フレームワークを使用してビルドを呼び出します。これだけではまだ十分ではありません。.config ファイルで使用するアセンブリを固定する必要があります。

    <configuration> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Microsoft.Build.Framework" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/> <bindingRedirect oldVersion="0.0.0.0-99.9.9.9" newVersion="2.0.0.0"/> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="Microsoft.Build.Engine" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-99.9.9.9" newVersion="2.0.0.0"/> </dependentAssembly> ... ect ... </assemblyBinding> </runtime> </configuration>

ところで、定義する必要がある「MSBuildToolsPath」というプロパティを期待して、VS2008 で新しく作成されたプロジェクトで問題が発生する場合もあります。これは、MSBuild を使用している場合はコマンド ラインで定義でき、2 番目のオプションを使用している場合はプログラムで指定できます。

engine.GlobalProperties.SetProperty( "MSBuildToolsPath", msbuildPath );
于 2009-08-31T19:39:40.563 に答える
0

おそらく、supportedRuntime 構成要素は一見の価値があります。しかし、これが役立つかどうかはわかりません。

于 2009-08-31T20:23:21.317 に答える