views:

986

answers:

1

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.

A: 

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.

Gary Hall