.net core (csproj) global.эквивалент JSON' projects'
С .net core (project.json) я использовал для переключения между пакетами nuget и исходным кодом, добавив путь к исходному коду в поле projects в глобальном.формат JSON. После этого он добавит все проекты, которые он сможет найти в этом пути, которые могут заменить пакеты nuget, на которые я ссылался.
Я использовал эту функцию много, потому что у меня есть свои собственные пакеты nuget, которые я использую, но я хочу проверить изменения в моем другом проекте перед публикацией. Но однажды я переключился на Sdk 1.0.0 / VS 2017/csproj .net core эта функция, казалось, исчезла.
Альтернативой является просто ручное добавление каждого проекта, переключение ссылок вручную (так как они разбиты на ссылки project, nuget и sdk), а затем после переключения все это обратно.
Любые мысли или советы были бы великолепны.
Обновление:
Похоже, что в csproj нет эквивалента (как и ожидалось), но на данный момент существуют обходные пути msbuild (начиная с начального VS 2017 / .NET Core SDK 1.0.0 освобождение)
2 ответов:
Да, я тоже привык к этой функциональности и построил свой рабочий процесс вокруг нее. Я все еще ищу решение, но в настоящее время я играю с идеей использования условной логики в файлах csproj. Поскольку теперь это msbuild, вы можете делать такие вещи, как:
<Choose> <When Condition="Exists('..\..\..\MyProject')"> <ItemGroup> <ProjectReference Include="..\..\..\MyProject\src\MyProject\MyProject.csproj" /> </ItemGroup> </When> <Otherwise> <ItemGroup> <PackageReference Include="MyProject" Version="1.0.0" /> </ItemGroup> </Otherwise> </Choose>Это заменяет жесткую ссылку на пакет условным, который использует ссылку на проект, если он может найти исходный код (в данном случае каталог), и ссылку на пакет, если не может.
Так что по умолчанию вы будете ссылаться на пакет, но если вы хотите отладить один из своих проектов, вы проверяете его в расположении, которое проверяет условное условие, и добавляете проект в свое решение.
Таким образом, вам нужно только изменить файл решения (добавив проект), когда вы хотите включить исходный код, а не переписывать все ссылки на проект.
Для других, которые заинтересованы в попытке эмулировать с Global.json сделал, я работал над этим сейчас, используя пару сценариев powershell и пользовательский файл json, который имитирует его. Проверьте мой ответ здесь: https://stackoverflow.com/a/43795974/5504245
Comments