Предотвращение Visual Studio от переписывания ссылок проекта - PullRequest
0 голосов
/ 11 мая 2018

У меня есть большое решение, в котором «корневой» проект включает в себя тематические проекты по глобусу:

<ProjectReference Include="..\Feature\*\*.csproj" />

Это работает, несмотря на то, что в списке литературы это выглядит не очень хорошо, но иногда возникает проблема, Visual Studio перепишет csproj со всеми разрешенными ссылками на проект:

<ProjectReference Include="..\Feature\A\A.csproj" />
<ProjectReference Include="..\Feature\B\B.csproj" />

Не ясно, что вызывает это, но я предполагаю, что это может иметь какое-то отношение к NuGet.

Можно ли как-то помешать VS сделать это (похоже на использование DisableFastUpToDateCheck для пользовательских сценариев MSBuild)?

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Я провел дальнейшие исследования по этому вопросу.

Для тестирования можно согласованно воспроизвести расширение, переименовав любой проект, включенный в шаблон с подстановочными знаками.

Кроме того, это самый простой способзапретить расширение до:

  1. Переместить глобусы ссылок проекта в Directory.Build.props или другой внешний файл
  2. Установить DisableFastUpToDateCheck в true в вашем csproj

Использование свойств не работает и не требуется, аналогично использованию Exclude.

0 голосов
/ 11 мая 2018

Не ясно, что это вызывает, но я предполагаю, что это может иметь какое-то отношение к NuGet.

Это должно быть связано с элементами в ItemGroup. У меня раньше была похожая проблема, но разница в том, что я использую символы подстановки для хранения файлов .cs, а ваши файлы .csproj выглядят так:

<ItemGroup>
    <Compile Include="**\*.cs" />
</ItemGroup>

Когда я удаляю один из файлов .cs в <ItemGroup>, подстановочный знак раскрывается в файле csproj. В вашем случае, если я удалил проект C.csproj из Visual Studio (добавьте его ранее, перезагрузите корневой проект), я получу тот же результат, что и вы.

Для этой проблемы многие другие участники сообщества передают голос пользователя команде Visual Studio: VS IDE должна поддерживать шаблоны файлов в файлах проекта . Теперь это хорошо поддерживается в новой системе проектов, используемой .NET Core и .NET Standard в Visual Studio 2017, но они не выполнили работу по его поддержке для существующих типов проектов.

Есть ли способ остановить VS от этого (схоже с использованием DisableFastUpToDateCheck для пользовательских сценариев MSBuild)?

Чтобы решить эту проблему, вы можете использовать опцию Exclude="...", чтобы исключить проект, на который вы не хотите ссылаться:

  <ItemGroup>
    <ProjectReference Include="..\Feature\*\*.csproj" Exclude="..\Feature\C\C.csproj" />
  </ItemGroup> 

Или, если вы хотите удалить один из проектов и сохранить шаблон подстановки, вам нужно всего лишь выгрузить корневой проект, затем удалить эталонный проект, перезагрузить корневой проект, шаблон подстановки будет сохранен.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...