WIX 3.5 fails under NAnt but not under VS2010 - msbuild

I know this a is a common issue, but everything I can find in the forums seems to relate to 64bit framework incompatability (which is not an issue in my case).
I have a set of simple WIX 3.5 installers developed using Votive that I can compile happily in VS2010, but when I try to compile them via NAnt (and MSBuild) on TeamCity (i.e. TeamCity -> Nant -> MSBuild -> WIX) I get the following error:
[exec] Project file contains ToolsVersion="4.0", which is not supported by this
version of MSBuild. Treating the project as if it had ToolsVersion="3.5".
[exec] Compile:
[exec] Microsoft (R) Windows Installer Xml Compiler version 3.5.2006.0
[exec] Copyright (C) Microsoft Corporation. All rights reserved.
[exec]
[exec] Product.wxs
[exec] Product.Generated.wxs
[exec] Link:
[exec] Microsoft (R) Windows Installer Xml Linker version 3.5.2006.0
[exec] Copyright (C) Microsoft Corporation. All rights reserved.
[exec]
[exec] light.exe : error LGHT0001: Unable to load DLL 'winterop.dll': The specified module
could not be found. (Exception from HRESULT: 0x8007007E)
[exec]
[exec] Exception Type: System.DllNotFoundException
[exec]
[exec] Stack Trace:
[exec] at Microsoft.Tools.WindowsInstallerXml.Cab.Interop.NativeMethods.ExtractCabBegin()
[exec] at Microsoft.Tools.WindowsInstallerXml.Binder.BindDatabase(Output output, String databaseFile)
[exec] at Microsoft.Tools.WindowsInstallerXml.Binder.Bind(Output output, String file)
[exec] at Microsoft.Tools.WindowsInstallerXml.Tools.Light.Run(String[] args)
[exec] Done Building Project "c:\dev2\ad3\utilities\Installers\Database\Database.wixproj" (default targets) -- FAILED.
[exec] Done Building Project "c:\dev2\ad3\AgentDesktop3.1.sln" (default targets) -- FAILED.
[exec]
[exec] Build FAILED.
[exec]
[exec] "c:\dev2\ad3\AgentDesktop3.1.sln" (default target) (1) ->
[exec] "c:\dev2\ad3\utilities\InstallerService\InstallerService.csproj" (default target) (5) ->
[exec] (ResolveAssemblyReferences target) ->
[exec] C:\Windows\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets
: warning MSB3088: Could not read state file
"obj\Release\ResolveAssemblyReference.cache". Unable to find assembly
'Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a'.
[exec]
[exec]
[exec] "c:\dev2\ad3\AgentDesktop3.1.sln" (default target) (1) ->
[exec] "c:\dev2\ad3\utilities\Installers\Database\Database.wixproj" (default target) (6) ->
[exec] (Link target) ->
[exec] light.exe : error LGHT0001: Unable to load DLL 'winterop.dll': The specified
module could not be found. (Exception from HRESULT: 0x8007007E)
[exec]
[exec] 1 Warning(s)
[exec] 1 Error(s)
[exec]
[exec] Time Elapsed 00:00:05.92
BUILD FAILED
Any ideas?

We had a similar issue when building using Team Build (2010). We ended up doing a filemon (its called processmonitor these days) for winterop.dll on one of our build agents to see where it was expected.
We ended up adding the bin folder of the wix installation in our path and suddenly winterop.dll was found.

Depending on how you do your team build you can also add a target file that re-maps the wix targets, tools and paths and then sets up the 'RunWixToolsOutOfProc' item to run it out of band. Here's a chunk of my target file that maps the three paths. Just change the initial property to wherever you usually put your wix files.
<CreateProperty Value="$(ProductDirRoot)\buildfiles\tasks\wix\">
<Output TaskParameter="Value" PropertyName="WixToolPath"/>
<Output TaskParameter="Value" PropertyName="WixExtDir"/>
</CreateProperty>
<CreateProperty Value="$(WixToolPath)wix.targets">
<Output TaskParameter="Value" PropertyName="WixTargetsPath"/>
</CreateProperty>
<CreateProperty Value="$(WixToolPath)wixtasks.dll">
<Output TaskParameter="Value" PropertyName="WixTasksPath"/>
</CreateProperty>
<!-- If we didn't find the registry path, assume we're in a 64bit process. -->
<!-- WiX tools are 32bit EXEs, so run them out-of-proc when MSBuild is 64bit. -->
<CreateProperty Value="true" Condition=" '$(MSBuildExtensionsPath64)' != '' ">
<Output TaskParameter="Value" PropertyName="RunWixToolsOutOfProc" />
</CreateProperty>

Is there any chance you're not setting the working directory right? I assume you've verified the DLL is there?
I'd also install .NET 4.0 to remove the warning - might as well eliminate this as a potential cause (can't personally think of any reason why something straightforward would cause it to break). Perhaps as a half way house you could change the ToolsVersion back to 3.5 ?

This sounds like a known issue: http://sourceforge.net/tracker/?func=detail&aid=3037918&group_id=105970&atid=642714

Related

MSBuild fails with an error in the "AL" task with error code AL1019

We are currently having problems while compiling a solution with MSBuild. The build fails randomly on the resource linking step inside the task "AL" which executes the "AL.exe" linker.
ALINK : error AL1019: Metadata failure while creating assembly -- The volume for a file has been externally altered so that the opened file is no longer valid.
The build log shows the following execution flow.
4>Target "GenerateSatelliteAssemblies" in file "C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets" from project "C:\source\MyProject.csproj" (target "CreateSatelliteAssemblies" depends on it):
4>Building target "GenerateSatelliteAssemblies" completely.
4>Output file "obj\Debug\de\MyProject.dll" does not exist.
4>Task "MakeDir"
4>Done executing task "MakeDir".
4>Task "AL"
4> C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 Tools\AL.exe /culture:de /out:obj\Debug\de\MyProject.resources.dll /template:obj\Debug\MyProject.dll /embed:obj\Debug\MyProject.SomeResource.de.resources
4> Microsoft (R) Assembly Linker version 14.0.0081.0
4> Copyright (C) Microsoft Corporation. All rights reserved.
4>
4>Done executing task "AL".
4>Done building target "GenerateSatelliteAssemblies" in project "MyProject.csproj".
4>Target "GenerateSatelliteAssemblies" in file "C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets" from project "C:\source\MyProject.csproj" (target "CreateSatelliteAssemblies" depends on it):
4>Building target "GenerateSatelliteAssemblies" completely.
4>Output file "obj\Debug\en\MyProject.resources.dll" does not exist.
4>Task "MakeDir"
4>Done executing task "MakeDir".
4>Task "AL"
4> C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 Tools\AL.exe /culture:en /out:obj\Debug\en\MyProject.resources.dll /template:obj\Debug\MyProject.dll /embed:obj\Debug\MyProject.SomeResource.en.resources
4> Microsoft (R) Assembly Linker version 14.0.0081.0
4> Copyright (C) Microsoft Corporation. All rights reserved.
4>
4>ALINK : error AL1019: Metadata failure while creating assembly -- The volume for a file has been externally altered so that the opened file is no longer valid.
4> The command exited with code 1.
4>Done executing task "AL" -- FAILED.
4>Done building target "GenerateSatelliteAssemblies" in project "MyProject.csproj" -- FAILED.
To me it is completely unclear what is meant by the error code AL1019. The MSDN error code listing didn't help either.

Why is my packaging step failing in teambuild?

I'm just the build guy, I didn't write the web app and don't know much about web apps (as will become abundantly clear, I'm sure).
So dude tells me we need to run "msbuild /T:Package /P:Configuration=Release" to package his app. Okay. There's multiple solutions in his build definition and only one of them which needs the Package target so I wrote a stupid little msbuild proj file to add to his TFS build definition with a default target that looks like this:
<Target Name="Package" Condition=" '$(Configuration)' == 'Release' ">
<MSBuild Projects="HisApp.csproj"
Properties="Configuration=$(Configuration)"
Targets="Package" />
</Target>
Added that to the build definition and it fails with this:
Build started 8/7/2012 7:17:48 PM.
Project "C:\path\to\MyDumbScript.proj" on node 1 (default targets).
Package:
Project "C:\Path\to\MyDumbScript.proj" (1) is building "C:\Path\to\HisApp.csproj" (2) on node 1 (Package target(s)).
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets(1737,5): error : Value cannot be null. [C:\Path\to\HisApp.csproj]
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets(1737,5): error : Parameter name: type [C:\Path\to\HisApp.csproj]
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets(1737,5): error : Unknown error (0x80005000) [C:\Path\to\HisApp.csproj]
Done Building Project "C:\Path\to\HisApp.csproj" (Package target(s)) -- FAILED.
Done Building Project "C:\Path\to\MyDumbScript.proj" (default targets) -- FAILED.
Build FAILED.
"C:\Path\to\MyDumbScript.proj" (default target) (1) ->
"C:\Path\to\HisApp.csproj" (Package target) (2) ->
(GetProjectWebProperties target) ->
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets(1737,5): error : Value cannot be null. [C:\Path\to\HisApp.csproj]
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets(1737,5): error : Parameter name: type [C:\Path\to\HisApp.csproj]
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets(1737,5): error : Unknown error (0x80005000) [C:\Path\to\HisApp.csproj]
0 Warning(s)
2 Error(s)
Time Elapsed 00:00:00.82
So that's as clear as mud.
Questions:
Is there some more straightforward way to call the package target from Team Build when the build definition calls multiple solutions?
Why's this failing?
Thanks.
It looks like the errors were due to IIS not being enabled on the build machine.
When I enabled the “Web Management Tools” and “World Wide Web Services” features on the build machine the build failed in new and more interesting (and less opaque) ways.
As for the question of how better to call the package target from Team Build, I'd be happy to hear answers, but this works now.

Is it possible to use a Portable Class Library that references System.Net in MonoDroid?

Following from How can I build a targetting pack for Portable Class Libraries? and the advice in http://jpobst.blogspot.com/2012/04/mono-for-android-portable-libraries-in.html I've managed to build some monodroid example programs which use Portable Class Libraries.
However, if any of my input PCLs reference the System.Net assembly, then monodroid fails to package my apk - because it complains about File Not Found for System.Net.dll.
As I understand it (from http://docs.xamarin.com/android/about/assemblies), MonoDroid bundles all the System.Net functionality inside System.dll.
Is there any way I can get MonoDroid to use these PCLs which reference System.Net?
Is there any way I can get the monodroid packager to understand this System.net-> System redirection?
Or is there some pre-package step I could run that would "correct" the referencing just for monodroid?
Or any other suggestions?
Update with technical info:
The packaging process is currently failing at the level of:
"C:\Projects\Misc\MVVMCROSS\Sample - Tutorial\Tutorial\Tutorial.UI.Droid\Tutorial.UI.Droid.csproj" (SignAndroidPackage target) (1) ->
(_ResolveAssemblies target) ->
C:\Program Files (x86)\MSBuild\Novell\Novell.MonoDroid.Common.targets(441,2): error : Exception while loading assemblies: System.IO.FileNotFoundException: Could not load assembly 'System.Net, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e'. Perhaps it doesn't exist in the Mono for Android profile? [C:\Projects\Misc\MVVMCROSS\Sample - Tutorial\Tutorial\Tutorial.UI.Droid\Tutorial.UI.Droid.csproj]
C:\Program Files (x86)\MSBuild\Novell\Novell.MonoDroid.Common.targets(441,2): error : File name: 'System.Net.dll' [C:\Projects\Misc\MVVMCROSS\Sample - Tutorial\Tutorial\Tutorial.UI.Droid\Tutorial.UI.Droid.csproj]
C:\Program Files (x86)\MSBuild\Novell\Novell.MonoDroid.Common.targets(441,2): error : at Monodroid.Tuner.MonoDroidResolver.Resolve(AssemblyNameReference reference, ReaderParameters parameters) [C:\Projects\Misc\MVVMCROSS\Sample - Tutorial\Tutorial\Tutorial.UI.Droid\Tutorial.UI.Droid.csproj]
C:\Program Files (x86)\MSBuild\Novell\Novell.MonoDroid.Common.targets(441,2): error : at Xamarin.Android.Tasks.ResolveAssemblies.AddAssemblyReferences(List`1 assemblies, AssemblyDefinition assembly) [C:\Projects\Misc\MVVMCROSS\Sample - Tutorial\Tutorial\Tutorial.UI.Droid\Tutorial.UI.Droid.csproj]
C:\Program Files (x86)\MSBuild\Novell\Novell.MonoDroid.Common.targets(441,2): error : at Xamarin.Android.Tasks.ResolveAssemblies.AddAssemblyReferences(List`1 assemblies, AssemblyDefinition assembly) [C:\Projects\Misc\MVVMCROSS\Sample - Tutorial\Tutorial\Tutorial.UI.Droid\Tutorial.UI.Droid.csproj]
C:\Program Files (x86)\MSBuild\Novell\Novell.MonoDroid.Common.targets(441,2): error : at Xamarin.Android.Tasks.ResolveAssemblies.AddAssemblyReferences(List`1 assemblies, AssemblyDefinition assembly) [C:\Projects\Misc\MVVMCROSS\Sample - Tutorial\Tutorial\Tutorial.UI.Droid\Tutorial.UI.Droid.csproj]
C:\Program Files (x86)\MSBuild\Novell\Novell.MonoDroid.Common.targets(441,2): error : at Xamarin.Android.Tasks.ResolveAssemblies.Execute() [C:\Projects\Misc\MVVMCROSS\Sample - Tutorial\Tutorial\Tutorial.UI.Droid\Tutorial.UI.Droid.csproj]
This is occurring within the MSBuild task:
<!-- Find all the assemblies this app requires -->
<ResolveAssemblies
Assemblies="$(ProjectDir)$(OutDir)$(TargetFileName);#(ReferencePath)"
I18nAssemblies="$(MandroidI18n)"
LinkMode="$(AndroidLinkMode)"
ReferenceAssembliesDirectory="$(TargetFrameworkDirectory)">
<Output TaskParameter="ResolvedAssemblies" ItemName="ResolvedAssemblies" />
<Output TaskParameter="ResolvedUserAssemblies" ItemName="ResolvedUserAssemblies" />
<Output TaskParameter="ResolvedFrameworkAssemblies" ItemName="ResolvedFrameworkAssemblies" />
<Output TaskParameter="ResolvedSymbols" ItemName="ResolvedSymbols" />
</ResolveAssemblies>
imported from:
<UsingTask TaskName="Xamarin.Android.Tasks.ResolveAssemblies" AssemblyFile="Novell.MonoDroid.Build.Tasks.dll" />
A possible solution (assuming MonoDroid supports type forwarding) is to have a System.Net.dll assembly which type forwards the relevant types to System.dll.
In the full .NET Framework, I believe those System.Net types are in System.dll, and if you look in System.Net.dll on .NET 4.0.3 or 4.5, you will see TypeForwardedToAttributes for those types, which allow those type references to System.Net.dll in a portable library to be redirected to System.dll. Jeremy Likness's blog post series on Understanding Portable Libraries goes into some detail about how this all works.
The references in a portable library refer to the full strong name of System.Net.dll. So you couldn't produce a correctly signed assembly with those type forwards yourself, since you don't have the private key. However, MonoDroid may handle strong names or signature validation differently. So you might be able to produce a System.Net.dll with the type forwards that MonoDroid would accept, and package it with your MonoDroid application.

Trouble building a BizTalk orchestration with MSBuild

I've got a BizTalk 2010 project I am trying to build via Cruise Control .NET. The weird thing is that it's having trouble with the CompileODX target, within the XLangTask. I can compile via MSBuild.exe on the command line, and when my account runs Cruise Control. However, when Cruise Control is running as a designated service account, it fails. The service account has Full Control on a parent of the directory containing the references (I only have Read/Execute). The service account is a local Admin on the box running Cruise Control service and has been rebooted.
I added some logging within the target to output the parameters to the XLangTask task along with the errors.
[exec] CompileODX:
[exec] XLangItems = CarrierSolicitProcess.odx
[exec] ProjectReferences = C:\CCNetBuild\FlexTMS.TLAutoTender.BizTalk\Trunk\Echo.BAS.TLAutoTender.External.Maps\bin\Release\Echo.BAS.TLAutoTender.External.Maps.dll;C:\CCNetBuild\FlexTMS.TLAutoTender.BizTalk\Trunk\Echo.BAS.TLAutoTender.External.Schemas\bin\Release\Echo.BAS.TLAutoTender.External.Schemas.dll;C:\CCNetBuild\FlexTMS.TLAutoTender.BizTalk\Trunk\Echo.BAS.TLAutoTender.Internal.Maps\bin\Release\Echo.BAS.TLAutoTender.Internal.Maps.dll;C:\CCNetBuild\FlexTMS.TLAutoTender.BizTalk\Trunk\Echo.BAS.TLAutoTender.Internal.Schemas\bin\Release\Echo.BAS.TLAutoTender.Internal.Schemas.dll;\\hq.echogl.net\files\Development\Release\Assemblies\Echo.Enterprise.BizTalk.FederatedEventingPortTypes\Implementations\Trunk\Echo.Enterprise.BizTalk.FederatedEventingPortTypes.dll;\\hq.echogl.net\files\Development\Release\Assemblies\Echo.Enterprise.FederatedMessaging\Implementations\Trunk\Echo.Enterprise.FederatedMessaging.dll;\\hq.echogl.net\files\Development\Release\Assemblies\Echo.Enterprise.FederatedMessaging.EventSchemas\Implementations\HEAD\Echo.Enterprise.FederatedMessaging.EventSchemas.dll;\\hq.echogl.net\files\Development\Release\Assemblies\Echo.Enterprise.Framework\Implementations\Trunk\Echo.Enterprise.Framework.dll;\\hq.echogl.net\files\Development\Release\Assemblies\Echo.USS.BizTalkEdiSchemas.CorrelationProperties\Implementations\HEAD\Echo.USS.BizTalkEdiSchemas.CorrelationProperties.dll;C:\Windows\assembly\GAC_MSIL\Microsoft.BizTalk.DefaultPipelines\3.0.1.0__31bf3856ad364e35\Microsoft.BizTalk.DefaultPipelines.dll;C:\Windows\assembly\GAC_MSIL\Microsoft.BizTalk.GlobalPropertySchemas\3.0.1.0__31bf3856ad364e35\Microsoft.BizTalk.GlobalPropertySchemas.dll;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies\Microsoft.BizTalk.Pipeline.dll;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies\Microsoft.BizTalk.TestTools.dll;C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\mscorlib.dll;C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Configuration.dll;C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Core.dll;C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.dll;C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Xml.dll;C:\Program Files (x86)\Microsoft BizTalk Server 2010\Microsoft.XLANGs.BaseTypes.dll;C:\Program Files (x86)\Microsoft BizTalk Server 2010\Microsoft.XLANGs.RuntimeTypes.dll;C:\Program Files (x86)\Microsoft BizTalk Server 2010\Microsoft.BizTalk.Interop.Agent.dll;C:\Program Files (x86)\Microsoft BizTalk Server 2010\Microsoft.BizTalk.Messaging.dll;C:\Program Files (x86)\Microsoft BizTalk Server 2010\Microsoft.XLANGs.Engine.dll;C:\Program Files (x86)\Microsoft BizTalk Server 2010\Microsoft.XLANGs.BizTalk.Engine.dll;C:\Program Files (x86)\Common Files\Microsoft BizTalk\Microsoft.RuleEngine.dll;C:\Program Files (x86)\Microsoft BizTalk Server 2010\Microsoft.XLANGs.BizTalk.ProcessInterface.dll;C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.Data.dll;C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.Web.Services.dll;C:\Program Files (x86)\Common Files\Microsoft BizTalk\Microsoft.BizTalk.TOM.dll
[exec] WarningLevel = 4
[exec] BpelCompliance = True
[exec] DefineConstants = TRACE
[exec] TreatWarningsAsErrors = false
[exec] TempAssembly = obj\Release\Echo.BAS.TLAutoTender.Processes.CarrierSolicit.ClrTypes.dll
[exec] OutputDirectory = obj\Release\BizTalk\XLang\
[exec] C:\CCNetBuild\FlexTMS.TLAutoTender.BizTalk\Trunk\Echo.BAS.TLAutoTender.Processes.CarrierSolicit\CarrierSolicitProcess.odx(917,48): error X2186: identifier 'EnterpriseEventSchema' does not exist in 'Echo.Enterprise.FederatedMessaging'; are you missing an assembly reference? [C:\CCNetBuild\FlexTMS.TLAutoTender.BizTalk\Trunk\Echo.BAS.TLAutoTender.Processes.CarrierSolicit\Echo.BAS.TLAutoTender.Processes.CarrierSolicit.btproj]
[exec] C:\CCNetBuild\FlexTMS.TLAutoTender.BizTalk\Trunk\Echo.BAS.TLAutoTender.Processes.CarrierSolicit\CarrierSolicitProcess.odx(917,48): error X2007: cannot find symbol 'Echo.Enterprise.FederatedMessaging.EnterpriseEventSchema' [C:\CCNetBuild\FlexTMS.TLAutoTender.BizTalk\Trunk\Echo.BAS.TLAutoTender.Processes.CarrierSolicit\Echo.BAS.TLAutoTender.Processes.CarrierSolicit.btproj]
[exec] C:\CCNetBuild\FlexTMS.TLAutoTender.BizTalk\Trunk\Echo.BAS.TLAutoTender.Processes.CarrierSolicit\CarrierSolicitProcess.odx(917,13): error X2153: a porttype operation can only contain messagetypes or class types [C:\CCNetBuild\FlexTMS.TLAutoTender.BizTalk\Trunk\Echo.BAS.TLAutoTender.Processes.CarrierSolicit\Echo.BAS.TLAutoTender.Processes.CarrierSolicit.btproj]
[exec] C:\CCNetBuild\FlexTMS.TLAutoTender.BizTalk\Trunk\Echo.BAS.TLAutoTender.Processes.CarrierSolicit\CarrierSolicitProcess.odx(924,48): error X2186: identifier 'EnterpriseEventSchema' does not exist in 'Echo.Enterprise.FederatedMessaging'; are you missing an assembly reference? [C:\CCNetBuild\FlexTMS.TLAutoTender.BizTalk\Trunk\Echo.BAS.TLAutoTender.Processes.CarrierSolicit\Echo.BAS.TLAutoTender.Processes.CarrierSolicit.btproj]
[exec] C:\CCNetBuild\FlexTMS.TLAutoTender.BizTalk\Trunk\Echo.BAS.TLAutoTender.Processes.CarrierSolicit\CarrierSolicitProcess.odx(924,48): error X2007: cannot find symbol 'Echo.Enterprise.FederatedMessaging.EnterpriseEventSchema' [C:\CCNetBuild\FlexTMS.TLAutoTender.BizTalk\Trunk\Echo.BAS.TLAutoTender.Processes.CarrierSolicit\Echo.BAS.TLAutoTender.Processes.CarrierSolicit.btproj]
[exec] C:\CCNetBuild\FlexTMS.TLAutoTender.BizTalk\Trunk\Echo.BAS.TLAutoTender.Processes.CarrierSolicit\CarrierSolicitProcess.odx(924,13): error X2153: a porttype operation can only contain messagetypes or class types [C:\CCNetBuild\FlexTMS.TLAutoTender.BizTalk\Trunk\Echo.BAS.TLAutoTender.Processes.CarrierSolicit\Echo.BAS.TLAutoTender.Processes.CarrierSolicit.btproj]
[exec] C:\CCNetBuild\FlexTMS.TLAutoTender.BizTalk\Trunk\Echo.BAS.TLAutoTender.Processes.CarrierSolicit\CarrierSolicitProcess.odx(931,48): error X2186: identifier 'EnterpriseEventSchema' does not exist in 'Echo.Enterprise.FederatedMessaging'; are you missing an assembly reference? [C:\CCNetBuild\FlexTMS.TLAutoTender.BizTalk\Trunk\Echo.BAS.TLAutoTender.Processes.CarrierSolicit\Echo.BAS.TLAutoTender.Processes.CarrierSolicit.btproj]
[exec] C:\CCNetBuild\FlexTMS.TLAutoTender.BizTalk\Trunk\Echo.BAS.TLAutoTender.Processes.CarrierSolicit\CarrierSolicitProcess.odx(931,48): error X2007: cannot find symbol 'Echo.Enterprise.FederatedMessaging.EnterpriseEventSchema' [C:\CCNetBuild\FlexTMS.TLAutoTender.BizTalk\Trunk\Echo.BAS.TLAutoTender.Processes.CarrierSolicit\Echo.BAS.TLAutoTender.Processes.CarrierSolicit.btproj]
[exec] C:\CCNetBuild\FlexTMS.TLAutoTender.BizTalk\Trunk\Echo.BAS.TLAutoTender.Processes.CarrierSolicit\CarrierSolicitProcess.odx(931,13): error X2153: a porttype operation can only contain messagetypes or class types [C:\CCNetBuild\FlexTMS.TLAutoTender.BizTalk\Trunk\Echo.BAS.TLAutoTender.Processes.CarrierSolicit\Echo.BAS.TLAutoTender.Processes.CarrierSolicit.btproj]
[exec] C:\CCNetBuild\FlexTMS.TLAutoTender.BizTalk\Trunk\Echo.BAS.TLAutoTender.Processes.CarrierSolicit\CarrierSolicitProcess.odx(938,48): error X2186: identifier 'EnterpriseEventSchema' does not exist in 'Echo.Enterprise.FederatedMessaging'; are you missing an assembly reference? [C:\CCNetBuild\FlexTMS.TLAutoTender.BizTalk\Trunk\Echo.BAS.TLAutoTender.Processes.CarrierSolicit\Echo.BAS.TLAutoTender.Processes.CarrierSolicit.btproj]
[exec] C:\CCNetBuild\FlexTMS.TLAutoTender.BizTalk\Trunk\Echo.BAS.TLAutoTender.Processes.CarrierSolicit\CarrierSolicitProcess.odx(938,48): error X2007: cannot find symbol 'Echo.Enterprise.FederatedMessaging.EnterpriseEventSchema' [C:\CCNetBuild\FlexTMS.TLAutoTender.BizTalk\Trunk\Echo.BAS.TLAutoTender.Processes.CarrierSolicit\Echo.BAS.TLAutoTender.Processes.CarrierSolicit.btproj]
[exec] C:\CCNetBuild\FlexTMS.TLAutoTender.BizTalk\Trunk\Echo.BAS.TLAutoTender.Processes.CarrierSolicit\CarrierSolicitProcess.odx(938,13): error X2153: a porttype operation can only contain messagetypes or class types [C:\CCNetBuild\FlexTMS.TLAutoTender.BizTalk\Trunk\Echo.BAS.TLAutoTender.Processes.CarrierSolicit\Echo.BAS.TLAutoTender.Processes.CarrierSolicit.btproj]
[exec] C:\CCNetBuild\FlexTMS.TLAutoTender.BizTalk\Trunk\Echo.BAS.TLAutoTender.Processes.CarrierSolicit\CarrierSolicitProcess.odx(992,44): error X2186: identifier 'EventProperties' does not exist in 'Echo.Enterprise.FederatedMessaging'; are you missing an assembly reference? [C:\CCNetBuild\FlexTMS.TLAutoTender.BizTalk\Trunk\Echo.BAS.TLAutoTender.Processes.CarrierSolicit\Echo.BAS.TLAutoTender.Processes.CarrierSolicit.btproj]
[exec] C:\CCNetBuild\FlexTMS.TLAutoTender.BizTalk\Trunk\Echo.BAS.TLAutoTender.Processes.CarrierSolicit\CarrierSolicitProcess.odx(992,44): error X2007: cannot find symbol 'Echo.Enterprise.FederatedMessaging.EventProperties.carrierId' [C:\CCNetBuild\FlexTMS.TLAutoTender.BizTalk\Trunk\Echo.BAS.TLAutoTender.Processes.CarrierSolicit\Echo.BAS.TLAutoTender.Processes.CarrierSolicit.btproj]
[exec] C:\CCNetBuild\FlexTMS.TLAutoTender.BizTalk\Trunk\Echo.BAS.TLAutoTender.Processes.CarrierSolicit\CarrierSolicitProcess.odx(992,9): error X2166: a correlationtype can only contain message property references [C:\CCNetBuild\FlexTMS.TLAutoTender.BizTalk\Trunk\Echo.BAS.TLAutoTender.Processes.CarrierSolicit\Echo.BAS.TLAutoTender.Processes.CarrierSolicit.btproj]
[exec] C:\CCNetBuild\FlexTMS.TLAutoTender.BizTalk\Trunk\Echo.BAS.TLAutoTender.Processes.CarrierSolicit\CarrierSolicitProcess.odx(992,106): error X2186: identifier 'EventProperties' does not exist in 'Echo.Enterprise.FederatedMessaging'; are you missing an assembly reference? [C:\CCNetBuild\FlexTMS.TLAutoTender.BizTalk\Trunk\Echo.BAS.TLAutoTender.Processes.CarrierSolicit\Echo.BAS.TLAutoTender.Processes.CarrierSolicit.btproj]
[exec] C:\CCNetBuild\FlexTMS.TLAutoTender.BizTalk\Trunk\Echo.BAS.TLAutoTender.Processes.CarrierSolicit\CarrierSolicitProcess.odx(992,106): error X2007: cannot find symbol 'Echo.Enterprise.FederatedMessaging.EventProperties.operationContextId' [C:\CCNetBuild\FlexTMS.TLAutoTender.BizTalk\Trunk\Echo.BAS.TLAutoTender.Processes.CarrierSolicit\Echo.BAS.TLAutoTender.Processes.CarrierSolicit.btproj]
[exec] C:\CCNetBuild\FlexTMS.TLAutoTender.BizTalk\Trunk\Echo.BAS.TLAutoTender.Processes.CarrierSolicit\CarrierSolicitProcess.odx(992,71): error X2166: a correlationtype can only contain message property references [C:\CCNetBuild\FlexTMS.TLAutoTender.BizTalk\Trunk\Echo.BAS.TLAutoTender.Processes.CarrierSolicit\Echo.BAS.TLAutoTender.Processes.CarrierSolicit.btproj]
[exec] C:\CCNetBuild\FlexTMS.TLAutoTender.BizTalk\Trunk\Echo.BAS.TLAutoTender.Processes.CarrierSolicit\CarrierSolicitProcess.odx(992,60): error X2166: a correlationtype can only contain message property references [C:\CCNetBuild\FlexTMS.TLAutoTender.BizTalk\Trunk\Echo.BAS.TLAutoTender.Processes.CarrierSolicit\Echo.BAS.TLAutoTender.Processes.CarrierSolicit.btproj]
[exec] : 'EventProperties.carrierId'
It seems that the build process cannot locate your EnterpriseEventSchema, is the dll for this schema present in the GAC on the build server?

What is the MSBuild equivalent to ant's -project-help?

I come from an ant background, and I'm starting to use msbuild. I want to create a .proj file with targets for clean, compile, deploy, etc. In ant, I would expect my user to run ant -project-help to get a list of the targets with their descriptions. There doesn't appear to be anything like this with msbuild, so I was thinking of setting DefaultTargets to "Help" and adding this target:
<Target Name="Help">
<Message Text="/t:Clean - Remove all bin folders and generated files"/>
<Message Text="/t:Compile - Generate assembly"/>
<Message Text="/t:Deploy - Install the assembly"/>
</Target>
When I run msbuild, I see this:
Microsoft (R) Build Engine Version 3.5.30729.1
[Microsoft .NET Framework, Version 2.0.50727.3053]
Copyright (C) Microsoft Corporation 2007. All rights reserved.
Build started 5/13/2010 9:00:00 AM.
Project "C:\MyProject\MyProject.proj" on node 0 (default targets).
/t:Clean - Remove all bin folders and generated files
/t:Compile - Generate assembly
/t:Deploy - Install the assembly
Done Building Project "C:\MyProject\MyProject.proj" (default targets).
Build succeeded.
0 Warning(s)
0 Error(s)
Time Elapsed 00:00:00.05
My target description are hidden among all the other output.
It feels like I have a paradigm-mismatch here. What's the best way to provide the build functionality I want so that users know where to find each target?
I'm afraid there is no clean way to do what you want. Creating a default help target is a good idea.
To have a cleaner output, you could set the Importance attribute of Message task to high to have your messages standing out more.
<Target Name="Message">
<Message Text="/t:Clean - Remove all bin folders and generated files" Importance="high"/>
<Message Text="/t:Compile - Generate assembly" Importance="high"/>
<Message Text="/t:Deploy - Install the assembly" Importance="high"/>
</Target>
You could also run MSBuild with the following argument to clean your output :
msbuild [ProjectFile.proj] /v:m /nologo
You'll have this output :
/t:Clean - Remove all bin folders and generated files
/t:Compile - Generate assembly
/t:Deploy - Install the assembly