.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 освобождение)

597   2  

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

    Ничего не найдено.