«Случайная» .NET Runtime ошибка при построении решений Biztalk 2009 из командной строки с использованием VS2008 devenv.exe - PullRequest
3 голосов
/ 17 февраля 2012

Для создания проектов Biztalk 2009 как части коллективной сборки TFS 2010 Я использую задачу MSBuild exec для развертывания devenv.exe в VS2008 следующим образом:

<Exec Command="&quot;$(BuildMachineLoc)devenv.exe&quot; &quot;$(BiztalkSolutionPath)&quot; /Build &quot;$(BuildFlavor)&quot; /out &quot;$(DropLocation)\$(BuildNumber)\CoreBiztalkBuildOutputLog.txt&quot;"/>

Это правильно работает около 95% времени.Однако в случайном порядке сборка завершится с ошибкой в ​​журнале.(Я немного отредактировал это, чтобы опустить имена служб, которые я создаю)

Build FAILED.
MSB3073: The command ""C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe" "[path to my solution]" /Build "Release" /out "[path to my drop location]\CoreBiztalkBuildOutputLog.txt"" exited with code -2146233082.

Если вы проверите файл CoreBiztalkBuildOutputLog.txt, он показывает, что все строится успешно.Если вы сравните этот журнал для неудачной сборки с успешной сборкой, они идентичны.

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

Event Type: Error
Event Source:   .NET Runtime
Event Category: None
Event ID:   1023
Date:       2/17/2012
Time:       2:58:41 AM
User:       N/A
Computer:   XXXXXXXX
Description:
.NET Runtime version 2.0.50727.3625 - Fatal Execution Engine Error (7A0BC59E) (80131506)

For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.

Небольшое возмущение в сети указывает на то, что этоявляется ошибкой CLR некоторого вида.Предлагаемые решения - переустановить \ восстановить .NET Framework.Это, казалось, имело смысл, так как сборочной машиной, которую я использовал ранее, был 7-летний динозавр, у которого были различные проблемы, пока я им владел.(~ 2 года)

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

Исходя из этого, я предполагаю, что это какой-то дефект.NET Framework, который я не смогу исправить.Но если у кого-то есть идеи, я весь в ушах.

1 Ответ

1 голос
/ 18 февраля 2012

Если вы хотите попробовать задачу MSBuild, вот переведенная задача из вашего примера:

<MSBuild Projects="$(BiztalkSolutionPath)"
    Targets="Build"
    Properties="Configuration=$(BuildFlavor);" />

Поскольку из вашего примера не ясно, определяет ли $(BuildFlavor) Configuration или *Свойство 1006 *, возможно, вам придется изменить это в соответствии с вашими потребностями.

Значение OutputPath будет установлено на уровне проекта - я лично использую параметр вывода задачи MSBuild для вывода собранных сборок.При развертывании в BizTalk (используя BTSTask ) вы можете скопировать вашу сборку BizTalk в нужный каталог, и вам не придется об этом заботиться в задаче сборки.

Как подсказывает Брайан.возможно, стоит взглянуть на BizTalk Deployment Framework , но ясно, что выбрасывать работающее в противном случае решение не вариант для вас.

...