Почему я пропускаю сборки из каталога bin при компиляции с помощью MsBuild? - PullRequest
5 голосов
/ 07 ноября 2008

У меня есть решение, которое содержит много библиотек классов и веб-сайт ASP .NET, который ссылается на эти сборки.

Когда я собираю решение из среды IDE, все сборки, на которые ссылается веб-сайт, попадают в каталог bin. Отлично!

Когда я использую MsBuild из командной строки, все упомянутые сборки не копируются в каталог bin. Почему?

Моя командная строка просто:

msbuild.exe d:\myproject\mysolution.sln

Ответы [ 9 ]

1 голос
/ 19 июля 2012

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

msbuild.exe myproject.vbproj /T:Rebuild
msbuild.exe myproject.vbproj /T:Package

Это, конечно, означало, что мне не хватало dll-файлов моей библиотеки в bin и, самое главное, в zip-файле пакета. Я обнаружил, что это прекрасно работает:

msbuild.exe myproject.vbproj /T:Rebuild;Package

Я понятия не имею, почему эта работа или почему она не была вообще. Но надеюсь, что это поможет.

1 голос
/ 20 ноября 2008

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

Итак, насколько я понимаю, если A зависит от B, который зависит от C, командная строка может не понимать, что A зависит от C.

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

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

0 голосов
/ 12 февраля 2014

Известная проблема для MSBuild 3.5 и msbuild 4.5. Я использую Msbuild 4, найденный на

 c:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe <yourSolutionFile>.sln

Кажется, проблема решена.

0 голосов
/ 23 февраля 2010

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

Копирует в каталог Assemblies в том же каталоге, что и файл Sln. У меня это есть на этапе после сборки всех моих проектов.

md "$(SolutionDir)Assemblies"
del "$(SolutionDir)Assemblies\$(TargetFileName)"
copy "$(TargetPath)" "$(SolutionDir)Assemblies" /y
0 голосов
/ 13 ноября 2008

Я не использовал msbuild для ASP.NET, но aspnet_compiler. Хотя ... я не помню почему. К сожалению.

%windir%\Microsoft.Net\framework\v2.0.50727\aspnet_compiler -v \%~n1  -f -p .\%1 .\Website
0 голосов
/ 13 ноября 2008

Вы всегда можете использовать задачу копирования в MSBuild, чтобы вытащить ваши сборки в соответствующий каталог. Я задал вопрос не так давно и в итоге сам ответил. В нем показано, как вы можете настроить задачу «Копировать», чтобы получить выходные данные из другого проекта и перетащить их в целевой проект:

MSBuild копирует выходные данные из другого проекта в выходные данные текущего проекта

0 голосов
/ 07 ноября 2008

Если я помню, MSBuild не копирует указанные сборки. Я опубликовал «решение» некоторое время назад: http://www.brunofigueiredo.com/post/Issue-Tracker-part-IV-The-Build-Enviroment-using-MSBuild-(or-NAnt).aspx

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

0 голосов
/ 07 ноября 2008

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

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

0 голосов
/ 07 ноября 2008

На какую msbuild вы ссылаетесь? Это правильный?

Я обычно так называю (из командного файла):

% WINDIR% \ Microsoft.NET \ Framework \ v3.5 \ msbuild.exe deploy.proj / v: n

В этом примере deploy.proj - это обычный файл msbuild, который выполняет некоторые другие действия до и после вызова msbuild для файла .sln.

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