2013-01-08 5 views
10

Visual Studio 2008ソリューションと.NET Framework v3.5があります。最近私はVisual Studio 2010と.NET Framework v4.0に変換しました。v3.5からv4.0への.NET Frameworkの移行

.NET Framework v4.0に変更するには、プロジェクトごとにターゲットをFramework v4.0に変更することによって、プロジェクトプロパティとビルドタブを終了しました。 私はコンフィギュレーションプロジェクトファイルcsprojを開く場合は、私がV3.5に関連するタグがあります見ることができます:私はのためにいくつかの参照を含める理由を知りたい

<ItemGroup> 
    <Reference Include="System" /> 
    <Reference Include="System.Core"> 
    <RequiredTargetFramework>3.5</RequiredTargetFramework> 
    </Reference> 
    <Reference Include="System.Data" /> 
    <Reference Include="System.Drawing" /> 
    <Reference Include="System.Xml" /> 
    <Reference Include="WindowsBase"> 
    <RequiredTargetFramework>3.0</RequiredTargetFramework> 
    </Reference> 
</ItemGroup> 

は、V3.5、V3.0を参照しています.NET Framework v4.0へのプロジェクトターゲットの場合は、フレームワーク。これは、プロジェクトがNETフレームワークv4.0をターゲットにしているにもかかわらず、他のプロジェクトでも発生します。

System.Core 3.5 WindowsBaseにターゲティングされること自体が(WindowsBase用)(System.Core用)3.5と3.0を必要と3.0

+2

これは、.NETの初期バージョンを選択したときにIDEが警告アイコンを表示する方法を示しています。機能ではなく、バグです。 –

答えて

2

これらの参照に標的化されます。実際、これは100%正しいわけではありません(この回答に対するRamhoundのコメントを参照)。

これまでのところ、2.0以上の.NETフレームワークは基本的に2.0の上位にあるDLLです。たとえば、数年前と1つ前の仕事では、半分のユーザーが.NET 2.0以上のものをサポートしていないWin2Kで動かなくなっていたので、LINQとHashset <T>が.NET 2.0に必要でした。私はMonoからSystem.Coreを再コンパイルし、2.0をターゲットにして、新しい機能を使用することができました。

私はそれがあなたが心配する必要があるとは思わない。

+0

両方のRequiredTargetFramework XML要素も空であることを指摘しておきます。つまり、3.5または3.0に向けられた参照はありません。必要に応じて、ソリューションファイルを手作業で修正し、それらの行を削除することができます。 –

+0

@Ramhound:良い点。私はずっとcsprojファイルを見たことがないので、私はそれを知らなかった。 –

+0

さまざまな理由でソリューションファイルを手作業で修正する必要がありました。この場合の最初の文は100%正確ではありません。このような場合、 'System.Core'は.NET Framework 4.0に含まれるバージョンとなり、' WindowsBase'はWPFアプリケーション用です。また、.NET Framework 4.0になります –

関連する問題