Visual Studio 2017 csproj добавляет «странные» файлы при установке пакета - PullRequest
0 голосов
/ 13 июня 2018

У меня есть некоторые проблемы с моим VS2017 csproj's (https://natemcmaster.com/blog/2017/03/09/vs2015-to-vs2017-upgrade/).). Когда я устанавливаю определенные пакеты nuget, я получаю дополнительные файлы, добавленные в мой проект, и большую часть времени зависимость даже не работает должным образом.Он не делает этого на старых csproj.

Два примера:

  • У меня есть один "самодельный" nuget (тоже из VS2017 csproj), который предполагаетсяпреобразовать локальный app.config целевого проекта при установке и удалении (в основном добавляя строку при установке и удаляя ее при деинсталляции). На старом csproj он делает то, что ему нужно. С csproj VS2017 он не будетвыполните преобразование, но добавьте два файла преобразования в проекты.

  • Мне нужно установить пакет с именем "CefSharp.OffScreen" на один из моих проектов. На более старом он работает какОчарование. На VS2017 csproj зависимость даже не существует (она имеет "!" впереди) и добавляет две директории "x64" и "x86" с тоннами файлов ("dll's" и т. д.).

Есть ли что-то известное о подобных проблемах в проектах VS2017?

Заранее спасибо за помощь!

1 Ответ

0 голосов
/ 14 июня 2018

Есть ли что-то известное о таких проблемах с проектами VS2017?

Для первого примера , потому что преобразования xdt не поддерживаются в PackageReference среде.Это включает как основанные на SDK проекты, так и классические проекты .net Framework, использующие PackageReference вместо packages.config.Вы можете следить за этой проблемой GitHub для получения более подробной информации.Существует также пример пакета , который показывает, как использовать логику во время сборки для применения преобразований вместо работы во всех средах.

Для второго примера вы можетенайдите файл CefSharp.Common.targets в папке \build в пакете зависимостей CefSharp.Common, в этом файле .target вы увидите следующий код:

  <ItemGroup>
    <CefSharpCommonBinaries32 Include="$(MSBuildThisFileDirectory)..\CefSharp\x86\*.*" />
    <CefSharpCommonBinaries64 Include="$(MSBuildThisFileDirectory)..\CefSharp\x64\*.*" />
    <CefSharpCommonBinariesAnyCPU Include="$(MSBuildThisFileDirectory)..\CefSharp\**\*.*" />
  </ItemGroup>

С этим файлом .target nuget будетвключая файлы в папке x64 и x86 вашего проекта.

В старом проекте .csproj этот файл .target, импортированный с помощью следующего кода после установки пакетов nuget, вы можете проверить его вфайл вашего проекта .csproj:

<Import Project="..\packages\CefSharp.Common.63.0.3\build\CefSharp.Common.targets" Condition="Exists('..\packages\CefSharp.Common.63.0.3\build\CefSharp.Common.targets')" />

Эти файлы в папке x86 и x64 будут импортированы при запуске проекта.

Когда вы используете новый проект .csproj,Файл .target, импортированный файлом project.assets.json, все файлы будут импортированы в проект при сохранении .target в project.assets.json.

Именно поэтому вы получили эти тонны DLLфайлы после установки пакета CefSharp.Common.Таким образом, это не проблема, но поскольку они импортируют .targets по-разному.

Если вы не хотите показывать эти dll-файлы в своем проекте, вы можете вернуть обратно packages.config.

Надеюсь, это поможет.

...