Структура каталогов связанных файлов Visual Studio - PullRequest
3 голосов
/ 14 июня 2010

У меня есть две версии проекта.Один для Silverlight и один для .NET.Проект SL имеет подавляющее большинство кодовой базы.Я хочу глобально добавить все файлы из проекта SL в версию .NET как связанные файлы.Мне удалось сделать это успешно, как это в файле csproj для версии .NET:

<Compile Include="..\MyProj.Common.SL\**\*.cs" Exclude="..\MyProj.Common.SL\Properties\**">

К сожалению, это добавляет все файлы прямо в корень моего проекта ... так что я в конечном итогес длинным нечитаемым списком связанных файлов в проекте .NET.Я действительно очень не хочу поддерживать вручную всю дублирующуюся структуру каталогов и иметь дело с изменениями имен каталогов, имен файлов и так далее.

Итак, есть ли способ заставить Visual Studio сохранитьструктура каталогов при добавлении связанных файлов в порядке подстановки выше?Или, по крайней мере, есть способ заставить его сгруппировать все связанные файлы вместе в каталоге в проекте .NET, таком как MyProj.Common.SL.Links?

Самое близкое, что я пришел, - это установить<Visible>false</Visible> под тегом <Compile>, который эффективно удаляет длинный нечитаемый список из 300 с лишним файлов .... но, к сожалению, это портит Resharper, который больше не считает эти файлы действительными и сходит с ума во всех проектах, которые ссылаютсяпроект .NET.Если бы я мог найти способ заставить Ресарпера не запутаться, это тоже было бы приемлемым решением ...

Есть предложения?

Спасибо.

Ответы [ 2 ]

4 голосов
/ 14 июня 2010

Я думаю, что нашел способ заставить это работать:

<Compile Include="..\MyProj.Common.SL\**\*.cs" Exclude="..\MyProj.Common.SL\Properties\**">
  <Link>MyProj.Common.SL.LinkedFiles\MyProj.Common.SL.LinkedFiles</Link>
</Compile>

Это создаст папку MyProj.Common.SL.LinkedFiles и сгруппирует все связанные файлы в этой папке.

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

Я думаю, я бы сделал это:

  • Скопируйте элементы <Compile> существующего проекта, которые предположительно имеют, например, Include="foo.cs" и Include="Folder\bar.cs"
  • Вставьте их в новый проект
  • Поиск и замена <Compile Include="(.*?)" /> на <Compile Include="..\Other\$1" ><Link>$1</Link></Compile>

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

На этом этапе у вас все еще будет два .csproj, но это также легко исправить. Теперь возьмите этот новый список элементов компиляции и поместите его в файл с именем, например. «Common.csproj», который просто содержит группу свойств с этими элементами компиляции, а затем имеет оба проекта <Import Include="..\Common.csproj" /> и не включает никаких собственных элементов Compile.

По сути, немного ручного труда по рефакторингу файла .csproj для совместного использования один раз, и тогда я думаю, что все будет готово. Я не уверен, является ли это «самым простым» способом разблокировать вас, но я думаю, что это звучит примерно так, как вы хотите для «идеальной» структуры.

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