プライマリ参照
C++/CLI クラスライブラリー を追加すると、「プライマリ参照 “ClassLibrary1.dll” は、現在のターゲット フレームワークのバージョン “2.0.0.0” より高いバージョン “4.0.0.0” を持つ .NET Framework アセンブリ “mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089” に間接的に依存するため、解決できませんでした。」MSB3258 が表示される
Manifest の
// Metadata version: v4.0.30319 .module extern KERNEL32.dll .assembly extern mscorlib { .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4.. .hash = (4C 6D D5 F0 B3 39 1D 2E 9B BF AE 45 93 CB 36 97 // Lm...9.....E..6. CF 28 E3 09 ) // .(.. .ver 2:0:0:0 } .assembly extern System.Data { .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4.. .hash = (E5 B5 50 54 98 E9 5C 10 DE FA 9F 8C DA 20 92 64 // ..PT..\...... .d 22 BB 14 2A ) // "..* .ver 2:0:0:0 } .assembly extern System { .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4.. .hash = (8F 67 30 D2 14 4F D0 12 CF A9 CD CF 9C 9D FA 6B // .g0..O.........k BD 6B 4E CD ) // .kN. .ver 2:0:0:0 } .assembly extern System.Drawing { .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....: .hash = (61 8E BC 29 EC 27 A8 A2 E6 5E 22 DC F1 34 50 67 // a..).'...^"..4Pg EB B5 52 2E ) // ..R. .ver 2:0:0:0 } .assembly extern System.Windows.Forms { .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4.. .hash = (C8 E3 55 99 8D A6 05 94 2E 9C 39 03 E4 57 C9 95 // ..U.......9..W.. D3 78 C6 FA ) // .x.. .ver 2:0:0:0 } .assembly extern System.Xml { .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4.. .hash = (F2 5E C5 12 29 C2 D9 EA D0 45 F7 4B 64 05 5B B2 // .^..)....E.Kd.[. 2C 4D 43 F8 ) // ,MC. .ver 2:0:0:0 } .assembly extern mscorlib as mscorlib_6 { .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4.. .hash = (85 30 75 CB A9 F2 05 CC 3F 90 83 F8 EF AC 38 80 // .0u.....?.....8. C8 C6 C5 39 ) // ...9 .ver 4:0:0:0 } .assembly extern System as System_7 { .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4.. .hash = (36 0F BF A1 60 15 52 0B 36 66 A7 2E DB FA 4C 19 // 6...`.R.6f....L. 00 F5 85 5D ) // ...] .ver 4:0:0:0 }
4:0:0:0 と 2:0:0:0 が混在している箇所に問題がありそうです。共通言語ランタイム サポートを /clr から /clr:safe に変更したところこの問題は解決しました。
Visual Studio 2010, Visual Studio 2012, Visual Studio 2013, Visual Studio 2015など.NET Framework 4 以降のバージョンに対応しているプラットフォーム ツールセットでは .NET Framework 2/3.5など古いバージョンに対応していないため、Visual Studio 2005, Visual Studio 2008 または Windows SDK のインストールが必要です。これは仕様のようです。
- Visual Studio 2010: Reference Assemblies Targeting Higher Framework Version – Stack Overflow
- Targeting the .NET 2 Framework when using AssemblyBuilder under .NET 4 – Developer Support Languages – VC++, C# and VB.NET – Site Home – MSDN Blogs
- .net – #using <mscorlib.dll> in VS2012 links to 4.0 version but I need 2.0. How? – Stack Overflow
こちらのブログに詳しい情報があります。
投稿日: 2014年11月24日 | カテゴリー: Windows settings | パーマリンク コメントする.
コメントする
0件のコメント