0

私は 2 台の Windows マシンを持っています。Machine1 には Visual Studio 2010 があります。Machine2 には、Visual Studio または .NET Framework SDK を含まない .NET Framework 4.0 クライアント プロファイルのみがあります。

1 つの単純な C# テストをコンパイルします (test.cs には "using System.Data;" が含まれています):

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe /target:exe test.cs

Machine1 で正常に動作します。しかし、Machine2 では次のように失敗しました。

test.cs(2,14): error CS0234: The type or namespace name 'Data' does not exist in
        the namespace 'System' (are you missing an assembly reference?)

を現在のディレクトリにコピーし"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\System.Data.dll"ましたが、それでも失敗しました。

コンパイルが機能する場合、「/r:system.data.dll」を追加しました。

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe /r:system.data.dll /target:exe test.cs

その理由を知っていますか?

4

2 に答える 2

1

csc.rspコンパイラは、デフォルトのコンパイル オプションを含むファイルであるという名前のファイルを自動的にロードしようとします。/noconfig オプションを指定してコンパイルしない限り。このファイルには、一般的な .NET Framework アセンブリ用の /reference オプションが多数含まれています。System.Data.dll はその 1 つです。

すべてのマシンに csc.rsp ファイルがあります。たとえば、現在使用しているマシンでは C:\Windows\Microsoft.NET\Framework\v4.0.30319 にあります。

そのファイルを持たないマシンを使用している可能性が非常に高いです。それがクライアント プロファイルに固有のものかどうかはわかりませんが、私は常にそれを避けてきました。ただし、Windows エクスプローラーで簡単に確認すると、ヒントが得られます。

于 2012-12-17T13:59:03.350 に答える
0

.NET クライアント プロファイルは、クライアント (ユーザー インターフェイス) アプリケーション向けの .NET の縮小バージョンです。完全な .NET で提供されるすべてのアセンブリとクラスがクライアント プロファイルに存在するわけではありません。両方で動作するアプリケーションを作成したい場合は、クライアント プロファイルに存在するクラスとアセンブリのみに制限する必要があります (サブセットであるため)。

単純に完全な .NET をマシン 2 にインストールする方が便利な場合があります。

また、.NET 4.5 の時点で、クライアント プロファイルが存在しないことにも注意してください。

于 2012-12-17T12:45:08.540 に答える