36
votes

My MSBuild command line is as follows:

msbuild e:\code\myProject.csproj /p:Configuration=Debug /p:OutputPath=bin/Debug /p:Platform=x86 /p:PlatformTarget=x86

The project builds fine on my development machine in VS2010 but not with the command above. I am running Win 7 64 - Bit. I'm getting an error that says I don't have the Silverlight 4 SDK installed but I do. I"ve read some posts that you have to set the Platform=x86 but to no avail. Here is the error message in full:

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

I appreciate anyone's help. Thanks.

7
So did you install the Silverlight 4 SDK ?leppie
Yes, this is my development machine. I have Visual Studio 2010 and Silverlight Tools for 2010 which includes the SDK. I also see the SDK files in this directory: C:\Program Files (x86)\Microsoft SDKs\Silverlight\v4.0.Ned
I was able to get a successful build on my Win7 64-bit development machine by running MSBuild from the c:\Windows\Microsoft.NET\Framework\v4.0.30319 directory instead of from c:\Windows\Microsoft.NET\Framework64\v4.0.30319. However, I'm still getting the same error on my build server which is Windows Server 2008 64 bit running MSBuild from this directory.Ned
Apparently installing SL 4 Toolkit is not sufficient even though it contains the SL 4 SDK. Once I ran the standalone SDK installer (go.microsoft.com/fwlink/?LinkId=188043), MSBuild is working fine.Ned

7 Answers

23
votes

I figured this out - there is a setting in MSBuild where you can choose x64 or x86 environment for MSBuild (in the same page where you set MSBuild flags) - set it to x86 and everything will work.

21
votes

If you have arrived here due to an issue with builds causing the above error (even though you have installed the Silverlight 4 SDK), then in order to achieve the same fix you must edit your Build Process template:

Go to the the "Process" tab, expand the "3.Advanced" section and locate the second from bottom setting ("MSBuild Platform") and set this to X86 which will then instruct the build agent to use the x86 variant of MSBuild.

This solved my problem in conjunction with Paul Betts' answer above.

20
votes

I've encountered the same problem when running: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe

Simply run:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe

4
votes

The start post says that you have to set Target Platform to X86, but that is not the solution for the build server.

In your build configuration file there is an option to set MSBuild Platform to X86. You can find this setting via: Process -> 3.Advanced -> MSBuild Platform (default set to auto)

The underlaying problem is that Silverlight doesn't support 64 bit.

I found this solution, which works for me, on: http://social.msdn.microsoft.com/Forums/en/msbuild/thread/20a742a1-b99c-4638-8590-9a9d6a95fb69

2
votes

I had this problem on Windows 7 Ultimate 64bit edition when trying to set up the Windows 7 Phone SDK. No combination of SDK/Toolkit installs/repairs was working out for me so I decided to investigate a bit further.

By placing a number of <Message /> build tasks in my Microsoft.Silverlight.Common.targets file, I discovered that I had no registry entry at Software\Microsoft\Silverlight\4.0. This was true for both the 32-bit section and the Wow6432Node section.

So, the outputs of a couple of the build targets that discover where the frameworks are stored were returning blanks, subsequently failing a number of other targets down the line. Specifically, the _FullFrameworkReferenceAssemblyPaths and TargetFrameworkDirectory properties were not being set properly.

Although totally anathema to all recommendations, I circumvented the problem by manually hardcoding the values into the .targets file, like thus:

<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>

Not something I'm particularly proud of, but needs must if I'm going to make any progress with development. I hope this helps someone else.

0
votes

If setting build to X86 and reinstalling Silverlight SDK 4 was not helpful: If you are using VS2013 on the build server, check if Windows Phone SDK is installed. I had to go run VS2013 installer, click change button and install windows phone sdk.

Or try to install windows phone sdk to be able to build windows phone solutions.

0
votes

I got this same problem using TeamCity. My build step was an MSBuild action which was set to x64. Once I changed it to x86 it worked. :)