web-dev-qa-db-ja.com

.NET標準ライブラリを.NETフレームワークライブラリに変更するにはどうすればよいですか?

C#の単純なパーサーのクラスライブラリを書いています。最初に作成したときに.NET標準2.0を使用しましたが、ソリューションの他のプロジェクトに準拠するためとNUnitを使用するために、.NET 4.6に移行する必要があります。

Microsoftのドキュメント の指示に従うことを試みましたが、プロパティで別のフレームワークを選択しようとすると、他の.NET標準バージョンしか見つかりません。

どうすれば移行できますか? .csprojファイルを手動で編集する必要がありますか?

17
Edward Minnix

プロジェクトファイル(.csproj)を開き、TargetFrameworkをnet462に変更します。

  <PropertyGroup>
    <TargetFramework>net462</TargetFramework>
  </PropertyGroup>
15
Jammer

Visual Studio 2017での私の個人的な経験は、プロジェクトの再作成と既存のソースの追加が最も簡単で、安全で、最も効果的な方法であるということです-.NET Frameworkベースのcsprojファイル(標準ベースと比較して)余分なxml要素があるため、「TargetFramework」を変更するだけでは十分ではないようです。以下は、デフォルトで表示される差分の一部です。


enter image description here

11
Kaponir

クラスライブラリをNugetパッケージとして公開する場合、これを設定するより良い方法があります。この記事をご覧ください。

https://weblog.west-wind.com/posts/2017/Jun/22/MultiTargeting-and-Porting-a-NET-Library-to-NET-Core-2

基本的に、マルチターゲティング用にクラスライブラリをセットアップして、.netコアプロジェクトおよび.netフレームワークの異なるバージョンにインポートできるようにします。

2
Marko

私がやったことと私のために働いたいくつかのステップがあります:

  1. git Pushコードですので、バックアップがあります:)
  2. VSでプロジェクトをアンロードします(プロジェクトを右クリックしてアンロードします)
  3. VSでプロジェクトを編集(右クリックして編集)
  4. TargetFramework OR/AND TargetFrameworkVersionを<TargetFramework>netcoreapp2.0</TargetFramework>に置き換えます

  5. プロジェクト行を変更します。通常は、最初の行(xmlルートの後)を<Project Sdk="Microsoft.NET.Sdk">に変更します

  6. 通常は2行目(xmlルートの後)のインポートを削除します

  7. 必要に応じて、ビルドオプションを記述するPropertyGroupsを保持します(カスタムである必要があります)
  8. 参照とファイル参照を削除します。これらは必要ありません。
  9. ファイルを閉じてリロードします(右クリックしてリロードします)。
  10. Assemblyinfoファイルは(プロパティフォルダーから)不要なため削除します。Assemblyバージョンはprojから取得されます。
  11. プロジェクトを右クリックしてプロパティに移動し、projファイルにエラーがないことを確認します。タイプミスやタグが近くにないことを確認してください。
  12. ビルド。不足している依存関係がある場合は、プロジェクトを右クリックして追加します。 -プロジェクトでそれらを編集したくないと思います。または、必要に応じて、dotnet restoreまたはdotnetbulidを実行してそれらを追加できます。

これがあなたのために働くことを願っています。彼らは多くのステップを踏んでいるように見えますが、それほど複雑ではありません。これは一度の努力です。

0
Dan