Я пытаюсь создать скрипт сборки, который позволил бы мне указать список путей к «проектам модулей», который включен в конкретный веб-сайт.
Следовательно, у меня есть этот макет:
customer folder
|_MainProject
|_ModuleProject1
|_ModuleProject2
Итак, в основном я хочу иметь возможность указать ItemGroup, которая будет содержать ModuleProject1 и 2, и скопировать соответствующие файлы из нее в MainProject.
<ItemGroup>
<CustomModule Include="ModuleProject1\*.csproj" />
<CustomModule Include="ModuleProjec2\*.csproj" />
</ItemGroup>
В моем основном сценарии сборки я хочу узнать пути к моим сателлитным сборкам, а также все dll, которые находятся в папке obj \ Release * .dll проекта.
У меня уже есть группы элементов для файла проекта (.csproj), поэтому я просто хочу добавить еще несколько ссылок на файлы. Но я не могу понять, как я это сделаю. Это то, что я имею сегодня:
<Satellites Include="$(ReferencesFolder)\??\*.dll" />
<Satellites Include="$(SiteRoot)\bin\??\*.dll" />
<Satellites Include="%(CustomModule.RelativeDir)obj\$(Configuration)\??\*.dll" />
Как мне сделать так, чтобы последняя строка работала на основании имеющихся у меня фактов?
При этом:
<Message Text="%(CustomModule.RelativeDir)obj\$(Configuration)\??\*.dll" />
Это выводит это:
ModuleProject1\obj\Release\??\*.dll
ModuleProject2\obj\Release\??\*.dll
И если у кого-нибудь есть ссылки на основы MSBuild с хорошими примерами, я был бы очень признателен. Я всегда заканчиваю на msdn некоторыми действительно загадочными примерами, которые мало что объясняют.
РЕДАКТИРОВАТЬ: Я пересмотрел свой план, и он почти заработал, однако включение не работает так, как я ожидаю. Ничего не включено, но есть файлы, указывающие путь.
Если я добавлю это вручную:
<Satellites Include="ModuleProject1\obj\Release\??\*.dll" />
Фактически входит в группу предметов "Спутники".