[解決済み】.Net 4.0から4.5へのリターゲットソリューション - NuGetパッケージを再ターゲットする方法は?
2022-04-08 02:27:03
質問
VS2010 で .NET 4.0 をターゲットにしているソリューションを VS2012 に移行し、.Net 4.5 に再ターゲットしたいのですが、どうしたらいいですか?
よくわからないのは、NuGetパッケージです。例えば、VS2010でEF4からアップデートしたEF5は、ここにあるように実際にはEF4.4であることが判明しました。
<Reference Include="EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\EntityFramework.5.0.0\lib\net40\EntityFramework.dll</HintPath>
</Reference>
また、プロジェクトのpackages.configに以下のように記載されていますね。
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="EntityFramework" version="5.0.0" targetFramework="net40" />
</packages>
そこで質問なのですが。
現在 .NET 4.0 をターゲットとして設定されているすべての NuGet パッケージを .NET 4.5 をターゲットとして再設定するためのベスト プラクティスは何ですか?
どのように解決するのですか?
NuGet 2.1
は、これをよりシンプルにする機能を提供します。
update-package -reinstall -ignoreDependencies
をパッケージマネージャーコンソールから実行します。
NuGet 2.0 は、アプリケーションの再ターゲットをうまく処理できません。 パッケージのターゲットフレームワークを変更するには、パッケージをアンインストールして再インストールする必要があります (各パッケージを再インストールできるように、インストールしたパッケージを記録しておく必要があります)。
パッケージのアンインストールと再インストールが必要な理由は、以下の通りです。
- パッケージのインストール時に、プロジェクトのターゲットフレームワークを決定します
- そして、パッケージの内容と照合し、適切な \lib フォルダー(および \content フォルダー)を見つけます。
- Assembly references are added with Hint Paths that pointing to the \lib folder, with right subfolder (for example, \libnet40) パッケージの \lib folder を指す Hint Paths を追加します。
- コンテンツファイルはパッケージの \content フォルダーからコピーされ、正しいサブフォ ルダー(例えば \content
- パッケージのインストールに使用したtargetFrameworkをpackages.configファイル内に記録します。
- プロジェクトのターゲットフレームワークを変更した後も、Hint Pathsはnet40を指します。
- パッケージのアンインストール時には、packages.config に記録された targetFramework をチェックして、プロジェクトからどのターゲットフレームワークのライブラリ/コンテンツを削除するか確認します。
- パッケージを再インストールすると、更新されたターゲットフレームワークを検出し、適切なライブラリ/コンテンツを参照/コピーします。
関連
-
[解決済み] app.configのマッピングがないアセンブリのapp.configの再マッピングを考慮する。
-
[解決済み] 16進数値0x00は無効な文字です。
-
[解決済み] 他のスレッドからGUIを更新するにはどうすればよいですか?
-
[解決済み] ファイルまたはアセンブリをロードできませんでした 操作がサポートされていません。(HRESULT: 0x80131515 からの例外)
-
[解決済み] .NET WebRequestを使用してsharepointにファイルをアップロードすると、409/Conflict HTTPエラーが発生する理由?
-
[解決済み] .NETコンソールアプリケーションでアプリケーションのパスを取得するにはどうすればよいですか?
-
[解決済み] Entity FrameworkとLINQ to SQLの比較
-
[解決済み] packages.config にあるすべてのパッケージを NuGet にインストール/更新させるにはどうすればよいですか?
-
[解決済み] Math.Round(2.5)はなぜ3でなく2を返すのですか?
-
[解決済み] アセンブリ 'netstandard, Version=2.0.0.0' への参照を追加する必要があります。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] VB.NETでプログラムパスを取得する?
-
[解決済み] WCF エラーの解決。このサービスのメタデータパブリッシングは現在無効になっています。
-
[解決済み] Html.BeginForm()にCSSクラスを追加する。
-
[解決済み] BasicHttpsBindingとWsHttpBinding with Transport securityの違いは何ですか?
-
[解決済み] リファレンスの追加にSystem.Web.Mvcが表示されないのはなぜですか?
-
[解決済み] .NETでのdecimal, float, doubleの違い?
-
[解決済み] 埋め込みリソーステキストファイルの読み方
-
[解決済み] packages.config にあるすべてのパッケージを NuGet にインストール/更新させるにはどうすればよいですか?
-
[解決済み] PowerShellで文字列がNULLまたは空であるかどうかを確認するにはどうすればよいですか?
-
[解決済み] Math.Round(2.5)はなぜ3でなく2を返すのですか?