Ответ 1
Я понял это - в MSBuild есть настройка, где вы можете выбрать среду x64 или x86 для MSBuild (на той же странице, где вы устанавливаете флаги MSBuild) - установить ее на x86, и все будет работа.
Моя командная строка MSBuild выглядит следующим образом:
msbuild e:\code\myProject.csproj /p:Configuration=Debug /p:OutputPath=bin/Debug /p:Platform=x86 /p:PlatformTarget=x86
Проект строит отлично на моей машине разработки в VS2010, но не с помощью команды выше. Я запускаю Win 7 64-бит. Я получаю сообщение об ошибке, которое говорит, что у меня нет установленного Silverlight 4 SDK, но я это делаю. Я прочитал несколько сообщений, которые вы должны установить Platform = x86, но безрезультатно. Вот полное сообщение об ошибке:
Microsoft (R) Build Engine Version 4.0.30319.1 [Microsoft .NET Framework, Version 4.0.30319.1] Copyright (C) Microsoft Corporation 2007. All rights reserved. Build started 6/8/2010 4:03:38 PM. Project "E:\code\dashboards\MyProject2010\MyProject2010.Web\MyProject2010 .web.csproj" on node 1 (default targets). GenerateTargetFrameworkMonikerAttribute: Skipping target "GenerateTargetFrameworkMonikerAttribute" because all output fi les are up-to-date with respect to the input files. CoreCompile: Skipping target "CoreCompile" because all output files are up-to-date with resp ect to the input files. CopyFilesToOutputDirectory: Copying file from "obj\Debug\MyProject.Web.dll" to "bin\Debug\MyProject.Web .dll". MyProject2010.web -> E:\code\dashboards\MyProject2010\MyProject2010.Web \bin\Debug\MyProject.Web.dll Copying file from "obj\Debug\MyProject.Web.pdb" to "bin\Debug\MyProject.Web .pdb". Project "E:\code\dashboards\MyProject2010\MyProject2010.Web\MyProject2010 .web.csproj" (1) is building "E:\code\dashboards\MyProject2010\MyProject20 10.Client\MyProject2010.Client.csproj" (2) on node 1 (GetXapOutputFile target( s)). C:\Program Files (x86)\MSBuild\Microsoft\Silverlight\v4.0\Microsoft.Silverlight .Common.targets(104,9): error : The Silverlight 4 SDK is not installed. [E:\cod e\dashboards\MyProject2010\MyProject2010.Client\MyProject2010.Client.cspr oj] Done Building Project "E:\code\dashboards\MyProject2010\MyProject2010.Clie nt\MyProject2010.Client.csproj" (GetXapOutputFile target(s)) -- FAILED. Done Building Project "E:\code\dashboards\MyProject2010\MyProject2010.Web\ MyProject2010.web.csproj" (default targets) -- FAILED. Build FAILED. "E:\code\dashboards\MyProject2010\MyProject2010.Web\MyProject2010.web.csp roj" (default target) (1) -> "E:\code\dashboards\MyProject2010\MyProject2010.Client\MyProject2010.Clie nt.csproj" (GetXapOutputFile target) (2) -> (GetFrameworkPaths target) -> C:\Program Files (x86)\MSBuild\Microsoft\Silverlight\v4.0\Microsoft.Silverlig ht.Common.targets(104,9): error : The Silverlight 4 SDK is not installed. [E:\c ode\dashboards\MyProject2010\MyProject2010.Client\MyProject2010.Client.cs proj] 0 Warning(s) 1 Error(s) Time Elapsed 00:00:00.39
Я ценю любую помощь. Спасибо.
Я понял это - в MSBuild есть настройка, где вы можете выбрать среду x64 или x86 для MSBuild (на той же странице, где вы устанавливаете флаги MSBuild) - установить ее на x86, и все будет работа.
Если вы пришли сюда из-за проблемы с tfs2010, вызывая вышеуказанную ошибку (даже если вы установили Silverlight 4 SDK), то для достижения того же исправления вы должны отредактировать шаблон сборки процесса:
Перейдите на вкладку "Процесс", разверните раздел "3.Advanced" и найдите вторую нижнюю настройку ( "Платформа MSBuild" ) и установите ее в X86, которая затем предложит агенту сборки использовать вариант x86 MSBuild.
Это решило мою проблему в сочетании с ответом Пауля Бетца выше.
Я столкнулся с такой же проблемой при запуске: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe
Просто запустите: C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe
В стартовом сообщении говорится, что вы должны установить целевую платформу на X86, но это не решение для сервера сборки.
В вашем файле конфигурации сборки есть возможность установить платформу MSBuild для X86. Этот параметр можно найти через: Процесс → 3.Advanced → Платформа MSBuild (по умолчанию установлена автоматическая)
Проблема с подстиланием заключается в том, что Silverlight не поддерживает 64-разрядную версию.
Я нашел это решение, которое работает для меня, на: http://social.msdn.microsoft.com/Forums/en/msbuild/thread/20a742a1-b99c-4638-8590-9a9d6a95fb69
У меня была эта проблема в Windows 7 Ultimate 64-битной версии при попытке настроить Windows 7 Phone SDK. Никакая комбинация установки/ремонта SDK/Toolkit не была разработана для меня, поэтому я решил исследовать немного дальше.
Поместив несколько задач сборки <Message />
в файл Microsoft.Silverlight.Common.targets, я обнаружил, что у меня не было записи реестра в Software\Microsoft\Silverlight\4.0. Это было верно как для 32-разрядной секции, так и для раздела Wow6432Node.
Таким образом, выходы нескольких целей сборки, которые обнаруживают, где хранятся фреймворки, возвращают пробелы, в результате чего количество строк вниз заканчивается рядом других целей. В частности, свойства _FullFrameworkReferenceAssemblyPaths и TargetFrameworkDirectory не были установлены должным образом.
Несмотря на то, что я полностью анафема ко всем рекомендациям, я обошел эту проблему, вручную скопировав значения в файл .targets, например:
<PropertyGroup>
<_FullFrameworkReferenceAssemblyPaths>C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\Silverlight\v4.0</_FullFrameworkReferenceAssemblyPaths>
<TargetFrameworkDirectory>C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\Silverlight\v4.0\Profile\WindowsPhone</TargetFrameworkDirectory>
</PropertyGroup>
Не то, чем я особенно горжусь, но нужно, если я собираюсь сделать какой-то прогресс в разработке. Надеюсь, это поможет кому-то другому.
Если настройка build на X86 и переустановка Silverlight SDK 4 не помогла: Если вы используете VS2013 на сервере сборки, проверьте, установлен ли Windows Phone SDK. Мне нужно было запустить установщик VS2013, нажать кнопку "Изменить" и установить Windows-телефон sdk.
Или попробуйте установить Windows Phone sdk, чтобы иметь возможность создавать решения для Windows-телефонов.
У меня возникла такая же проблема с использованием TeamCity. Мой шаг сборки был действием MSBuild, которое было установлено на x64. Как только я изменил его на x86, он сработал.:)