Итак, у меня есть проект PCL, но я хотел бы обновить его для поддержки .Net Standard

Я прочитал шаги веб-сайта Microsoft сделать это:

  • Щелкните правой кнопкой мыши файл проекта и выберите "Свойства".
  • В разделе "Библиотека" выберите Target .NET Platform Standard.

Но эта кнопка не существует в последней версии Visual Studio 2017.

Я также прочитал здесь. :

  • Закройте решение в VS
  • Возьмите существующий csproj и сделайте копию это где-то еще. Я оставлю эту другую копию открытой в блокноте.
  • Скопируйте / вставьте содержимое нового созданного вами проекта и замените содержимое вашего существующего проекта. Большая часть того, что вы имели в старом Проект больше не нужен. Что вам, вероятно, понадобится такие параметры, как имена подписей или сборок, которые не соответствуют Имя папки / соглашения. Если у вас есть файлы ResX с временем разработки сгенерированный код, вам нужно добавить следующее. Аналогично для Страницы форм Xamarin, вам это понадобится.

Но я не понимаю описанные выше шаги, так как у меня есть множество пакетов nuget и файлов ResX, поэтому при попытке всегда возникают ошибки сборки

Так есть ли какие-то прямые шаги по обновлению проекта PCL до .NetStandrard?

4
User1 19 Окт 2017 в 11:37

3 ответа

Лучший ответ

Шаги, которые я предпринял для преобразования PCL в стандартную библиотеку .Net, использовали некоторые шаги из здесь смешано с моим собственным:

  1. Преобразуйте все пакеты nuget из старого packages.config пути в PackageReference

К сожалению, в настоящее время нет инструмента миграции, поэтому, вероятно, проще всего удалить существующие пакеты, убедиться, что файл packages.config пропал, а затем установить пакет после установки VS Options в PackageReference. Вы также можете сделать это вручную (что я и сделал для своих проектов).

  1. Создайте в своем проекте новую библиотеку классов .Net Standard, назовите ее чем-нибудь похожим на MyPclProject1.

  2. Перетащите все файлы из старой библиотеки PCL в библиотеку .Net Standard

  3. Откройте старый файл PCL .csproj в Блокноте, скопируйте и вставьте весь код PackageReference в новый файл .Net Standard csproj.

  4. Если вы используете файлы .resx, вам нужно добавить этот код в ваш файл .Net Standard .Csproj (не знаю почему)

  5. затем обновите все ссылки из старого файла pcl в новый файл .Net Standard и удалите старую библиотеку

  6. переименуйте вашу новую .NEt стандартную библиотеку в старое имя pcl

1
user1 19 Окт 2017 в 13:03

На мой взгляд, лучший способ - создать новый проект (стандарт .net) с нуля и скопировать туда все ... Здесь у вас есть некоторая помощь: https://blog.xamarin.com / строительные - Xamarin - форм- приложения - нетто - стандарт /

2
user2451617 19 Окт 2017 в 11:41

На основе блога сообщение от Джеймса Монтемагно о том, как преобразовать переносимую библиотеку классов в стандарт .NET и сохранить историю Git :

  • Выгрузите ваш проект PCL (щелкните правой кнопкой мыши -> выгрузить) и начните его редактирование (щелкните правой кнопкой мыши -> нажмите Изменить).
  • Удалите все в csproj и вставьте это:

    <Project Sdk="Microsoft.NET.Sdk">
      <PropertyGroup>
        <TargetFramework>netstandard2.0</TargetFramework>
      </PropertyGroup>
    
      <ItemGroup>
        <!--<PackageReference Include="" Version=""/>-->
      </ItemGroup>
    
    </Project>
    
  • Добавьте обратно NuGets (просто откройте package.config и добавьте ссылки на пакеты выше или через менеджер пакетов NuGet.

  • Удалите AssemblyInfo.cs (теперь это в csproj) и packages.config (также в csproj через PackageReference)

Сегодня доступно много руководств (например, этот), но они в основном одинаковы (за исключением некоторых специфических особенностей проекта. И то, что я прочитал, это то, что вам нужен VS 2017 по крайней мере для этого.

0
testing 4 Дек 2019 в 13:00