2015-05-19 3 views
2

Я занимаюсь созданием CI-сборки. Я использую командную строку для построения наших решений VS2012, которые содержат много типов проектов (wpf, forms, MFC, C# и C++).Решение для построения командной строки vs Visual Studio 2012 build

Я использую следующую командную строку:

call "%VS110COMNTOOLS%\vsvars32.bat" 
devenv.com SolutionName.sln /rebuild "Release|Mixed Platforms" 

Если я смотрю на выходе сборки, все кажется хорошо. Тот же результат, что и при использовании VS и 100% успеха.

Однако исполняемый файл, построенный таким образом, имеет ошибки во время выполнения, в то время как то же самое решение, построенное с помощью Visual Studio, отлично работает.

Ошибка в InitializeComponent первого показанного WPF. Сообщение об ошибке указывает неверную строку версии. Я заметил разницу в сгенерированных файлов (XAML)

Командная строка сборки (не работает): Myview.g.cs

[System.Diagnostics.DebuggerNonUserCodeAttribute()] 
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] 
public void InitializeComponent() { 
    if (_contentLoaded) { 
     return; 
    } 
    _contentLoaded = true; 
    System.Uri resourceLocater = new System.Uri("/ProjectName;V3.9.1.*;component/Myview.xaml", System.UriKind.Relative); 

    #line 1 "..\..\Myview.xaml" 
    System.Windows.Application.LoadComponent(this, resourceLocater); 

    #line default 
    #line hidden 
} 

VS 2012 сборки (рабочий): Myview.g.cs

[System.Diagnostics.DebuggerNonUserCodeAttribute()] 
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] 
public void InitializeComponent() { 
    if (_contentLoaded) { 
     return; 
    } 
    _contentLoaded = true; 
    System.Uri resourceLocater = new System.Uri("/ProjectName;component/Myview.xaml", System.UriKind.Relative); 

    #line 1 "..\..\Myview.xaml" 
    System.Windows.Application.LoadComponent(this, resourceLocater); 

    #line default 
    #line hidden 
} 

Я действительно не» t знать почему и как V3.9.1* появляется в сгенерированном файле, но это, кажется, проблема. Как я могу это исправить? Все файлы, сгенерированные .xaml, имеют то же самое неправильное V3.9.1*, когда я строю с помощью командной строки.

+0

Я бы построил с msbuild.exe ........ не инструмент dev. На самом деле, я пробую все, что я НЕ могу установить Visual Studio на машине сборки. – granadaCoder

+0

Изменение строительного инструмента на самом деле не является ответом, и MSBuild приносит другие проблемы. Я не считаю, что Visual Studio на машине OUR является проблемой. – cricardol

+0

Установка VS на сборной машине устанавливает тонну «скрытых» зависимостей. Использование msbuild заставляет вас думать о них (как их получить и как их упаковывать) .... поскольку они обычно не находятся на «чистой» машине. Но каждому его. Удачи. – granadaCoder

ответ

0

Я наконец узнал!

Я не знаю, должен ли я знать или если он написан где-то в документации, но я просто рад, что, наконец, нашел проблему.

В моей работе jenkins, которая строит решение, есть строковый параметр ASSEMBLYVERSION. Я не знаю, почему, но похоже, что «devenv» нашел эту переменную и решил использовать ее.

Если я переименую эту переменную, devenv не будет ее использовать, и все будет хорошо.

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