2012-04-10 1 views
1

Я хотел бы иметь веб-проект в решении, которое настроено на «не строить» в конфигурации решения, однако мне все же хотелось бы, чтобы ссылки проекта (и их зависимости) были скопированы в папку bin этого проекта. Есть проекты библиотеки классов в sln, которые фактически построены, и веб-проект ссылается на них.

Наша текущая «сборка» просто вызывает devenv, которая делает именно это. По понятным причинам я предпочел бы использовать MSBuild.

Я не ищет методы для ручного копирования файлов (индивидуально или * .dll). Есть много способов сделать это. Я ищу конкретный способ воспроизвести поведение, которое дает devenv.exe, - автоматически копировать ссылки (и их зависимости) в зависимости от того, что находится в разделе проекта в файле решения (см. Ниже).MSBuild копирует ссылки на веб-проекты без построения

Этих ссылки приходят из раствора в этом разделе:

Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}")="TheWebProjectName", 
                "Web\Project\Folder", 
                "{1CBD1906-0C2E-4C92-A81D-63C2AD816EA1}" 
    ProjectSection(WebsiteProperties) = preProject 
     TargetFrameworkMoniker = ".NETFramework,Version%3Dv4.0" 
     ProjectReferences = "{B125568E-E80C-4080-B8D3-5602B604734C}|Some.Reference.dll; 
          {117E8B0A-F0D6-47D0-BB51-71099969566D}|Some.OtherRef.dll;" 
     ... 
    EndProjectSection 
EndProject 
+0

Рассмотрим [ 'MSDeploy sync'] (http://technet.microsoft.com/en-us/library/dd569005 (WS.10) .aspx) – KMoraz

+0

Спасибо за комментарий, но я не уверен, что это то, что я ищу. Мне нужно сначала получить ссылки веб-проекта в папку bin этого проекта, прежде чем я смогу синхронизировать их с другим веб-сервером. – csauve

ответ

1

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

Соответствующие целевые файлы:

  • Адрес: C: \ Windows \ Microsoft.NET \ Framework \ v $ (версия)
  • Microsoft.CSharp.targets
  • Microsoft.Common.targets

Соответствующая документация:

+0

Хорошо, спасибо, я посмотрю. Вы получаете щедрость (хотя я не уверен, что это действительно решит ее, но вы единственный, кто, кажется, прочитал вопрос) – csauve

1

Вы можете сделать построить такие операции, как это с помощью MSBuild Задачи: http://msdn.microsoft.com/en-us/library/ms171466(v=vs.80).aspx

В вашем конкретном случае, вы, вероятно, будете заинтересованные во встроенном Задача копирования: http://msdn.microsoft.com/en-us/library/3e54c37h(v=vs.80).aspx

+0

Если я это сделаю, я должен указать каждый файл, который я хотел бы скопировать. У нас около 50 библиотек классов и около 10 веб-проектов. Кроме того, ссылки должны обновляться в нашем проекте msbuild каждый раз, когда они изменяются в веб-проектах.Я хочу, чтобы те же функции, что и call devenv, дали мне. (если я хотел сделать только копии файлов, существует более 9000 способов сделать это) – csauve

+0

Я достаточно уверен, хотя ваш оригинальный вопрос упоминается только при копировании ссылок из «веб-проекта в решении». Не удалось назвать 50 классов и 10 веб-сайтов проектов и что вы не ищете операции копирования файлов. Вы, очевидно, отредактировали свой первоначальный вопрос после моего ответа. Сделайте свои намерения ясными перед отправкой вопроса, и у вас будет больше шансов получить ответы на ваши вопросы. – KodeKreachor

+0

Я понял, что подразумевается, что люди не идут к SO, чтобы задавать вопросы о том, «как скопировать файл A в местоположение B». – csauve

-1

Tr y используя powershell вместо msbuild !! Услуги Ria также в значительной степени зависят от командиров PowerShell.

Приветствие ..

+0

Ваш комментарий не очень помогает решая эту проблему, не указывая, какую команду использовать в PowerShell. Пожалуйста, будьте более конкретными. – csauve

-1

Вызова devenv.exe с помощью Exec задачи - мы делаем это все время для BizTalk решений, потому что старые версии MSBuild не поддерживают файлы BizTalk проект ...

+0

Это не помешает мне продвинуться дальше. Все, что можно было бы сделать, это обернуть devenv в msbuild, ничего не выполнив. – csauve

+0

Возможно, я не понимаю ваш вопрос, но если вы хотите получить точные функциональные возможности, которые предоставляет devenv, то как обертывание devenv ничего не делает? – Fabio

+0

Мне нужна функциональность, предоставляемая devenv, без использования devenv. Я хотел бы сделать то же самое, используя MSBuild. – csauve

Смежные вопросы