Сделать IDE построить выходные двоичные файлы в одну папку, и разрешить ссылки из нее - PullRequest
2 голосов
/ 08 октября 2009

Наш сервер сборки некоторое время использовал следующие свойства

OutputPath=c:\output;
OutputDir=c:\output;
OutDir=c:\output;
ReferencePath=c:\output;
AdditionalLibPaths=c:\output

, которые заставляют весь вывод идти в общую папку, а также позволяют разрешать ссылки для этой же папки. Это прекрасно работает, потому что

  1. это оптимизация по сравнению со зданием локально и копирование ссылок локально
  2. Мне нужны все мои DLL в общая папка в любом случае, чтобы я мог застегнуть и корабль

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

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

Я мог бы легко сделать это, если бы попросил команду создать внешний инструмент VS.Net для пакетного файла, который просто вызывает msbuild для выбранного проекта с желаемыми свойствами. Но в идеале им не придется менять рабочий процесс.

Я хочу знать

  • если кто-то еще делает это?
  • каков наилучший способ сделать это?
  • мне нужно редактировать каждый файл csproj или использовать внешний инструмент или командный файл

Спасибо

Ответы [ 2 ]

1 голос
/ 11 октября 2009

Вам необходимо установить OutDir и ReferencePath, чтобы проекты отправляли свои вывод в OutDir и для них разрешить ссылки из того же пути. Вы могли бы добавить общий файл целей с:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
     <PropertyGroup>
           <OutDir>c:\output\</OutDir>
           <ReferencePath>$(OutDir);$(ReferencePath)</ReferencePath>
     </PropertyGroup>
</Project>

Поместите это в файл foo.targets и импортируйте в каждый проект.

0 голосов
/ 08 октября 2009

Мы делаем то же самое. Редактирование каждого файла csproj. Довольно много сантехники, но это работает.

Если возможно - попробуйте уменьшить количество сборок до минимума.

Правки, необходимые для Csproj:

  <ProjectReference Include="..\Core\Core.csproj">
      <Project>{9C81B684-40CC-472A-804D-7C0F963315F5}</Project>
      <Name>Core</Name>
    </ProjectReference>

Должен стать регулярным:

<Reference Include="Core, Version=1.0.0.0, Culture=neutral,  
     processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>..\..\Deploy\$(Configuration)\Core.dll</HintPath>
    </Reference>

Хотя - относительный путь к папке для развертывания должен быть определен как свойство.

Но я не гуру сборки. Просто делюсь информацией. :)

...