Which version of build.exe is what?
I have a machine with Visual studio 2017 (v15) as only installation.
I then have 2 msbuild.exe files. One in the framework folder and the other in the Visual studio folder.
Besides different versioning, the output is different. The version number differs not only in format but in type of information too; Framework version vs Visual studio version. Without knowing better it looks like Visual studio has its own msbuild.exe, not deriving from the framework's.
C:\Windows\Microsoft.NET\Framework\v4.0.30319>msbuild /version
Microsoft (R) Build Engine version 4.7.3062.0
[Microsoft .NET Framework, version 4.0.30319.42000]
Copyright (C) Microsoft Corporation. All rights reserved.
4.7.3062.0
vs
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin>msbuild /version
Microsoft (R) Build Engine version 15.6.85.37198 for .NET Framework
Copyright (C) Microsoft Corporation. All rights reserved.
15.6.85.37198
A version of MSBuild was included in .NET Framework 4 which has not received any feature upgrades but since it is part of .NET Framework, it is continued to be shipped as part of Windows - frozen at the feature state that was implemented in version 4.0. The build number you posted indicates it is part of an 4.7.2 .NET Framework installation. It will only be able to build older .NET projects (Visual Studio 2010 c#/vb projects).
Newer MSBuild version are installed separately. Before Visual Studio 2017, there was a global MSBuild installation that VS used, but in 2017, MSBuild is local to the VS installation to support side-by-side installation of different VS versions.
Related
TFS build agent using MSBuild 14.0 fails with "Error MSB3091: Task failed because "AxImp.exe" was not found", while the SDK is installed and AxImp.exe is present.
The error states that it cannot find the file in the bin beneath "the location specified in the InstallationFolder value of the registry key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\NETFXSDK\4.6\WinSDK-NetFx40Tools-x86"
There is no "Microsoft SDKs" node at that location, however it does exist under Wow6432Node: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\NETFXSDK\4.6.2\
This node contains references to locations for both WinSDK-NetFx40Tools-x86 and WinSDK-NetFx40Tools-x64.
Is MSBuild looking in the wrong registry location?
Can I configure the build to make it locate either
C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.2 Tools
or
C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.2 Tools\x64
to find AxImp.exe and whatever else it expects from the SDK?
Background:
Our development has so far been built on Windows 10, Visual Studio 2017, targeting .Net Framework 4.6.2. I am now trying to automate builds on Windows Server 2012 R2 Standard.
I have installed Microsoft Build Tools 2015, Microsoft .Net Framework 4.6.2 SDK, .Net Framework 4.6.2 Targeting Pack and .Net Framework 4.6.2 Targeting Pack (ENU).
Have successfully created a build agent and get an almost successful build, after chasing down a number of missing dependencies.
TFS build agent cannot find AXImp.exe
(According to the error messages, they are all common errors. we could not give the most direct correct answer for this issue, we can only give you some troubleshootings. In order to avoid losing contact in the round-trip comments, I post those troubleshootings as answer instead of comments.)
Make sure using the MSBuild task instead of Visual Studio build task in the build definition.
Using MSBuild 14.0 (C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe) rather than 4.0 (C:\Windows\Microsoft.NET\Framework\v4.0.30319) in the MSBuild task, if you build the project with Visual Studio 2015.
Check if the ToolsVersion of the Project node is 14.0 not 4.0:
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
Install the Visual Studio 2015 on your build server.
Manually change the above registry key to the correct location, where AXImp.exe exists.
If all above not help you, please share the configuration of MSBuild task definition, the software you have installed on the build agent and try to build the project with Visual Studio 2015 on the build server.
Hope this helps.
I want to detect If Visual C++ 2012 X64 RunTime is installed or not.
There is samples and Registery keys sample for Visual C++ 2010 But I can not figure out for C++ 2012 X64 RunTime registery search key .
So How To Detect Visual C++ 2012 X64 RunTime In Wix Bootstrapper Project?
Is there a reference on creating a Visual Studio 2010 Installer project for a WinForms application that uses SQL 2012 LocalDb?
I'm not aware of any good reference, but it is pretty easy. The ClickOnce packages are compatible between Visual Studio 2010 and 2012, so all you'd need to do is to install Visual Studio 2012 somewhere to get the LocalDB bootstrapper (free VS 2012 Express for Desktop) and copy SqlLocalDB2012 folder from C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\Bootstrapper\Packages to C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages (depending on your Windows installation the location could be slightly different, but should be easy to find).
Now the caveat is that to connect from .NET to LocalDB you need .NET 4.0.2 or later. I don't think there is a bootstrapper for .NET 4.0.2 anywhere. So you will either need to implement it yourself, or target .NET 4.5. You should be able to copy the .NET 4.5 bootstrapper from VS 2012 just like you can copy the LocalDB one.
I am trying my hands on source code of WIX 3.6 to debug something as well as learn something.
On executing make.bat (present in root folder of WIX source) file, first i got NAnt not found. So I downloaded NAnt and updated make.bat file. On executing the file again I am getting this error
NAnt 0.91 (Build 0.91.3881.0; alpha2; 8/17/2010)
Copyright (C) 2001-2010 Gerry Shaw
http://nant.sourceforge.net
Buildfile: file:///D:/wix36-sources/wix.build
Target framework: Microsoft .NET Framework 4.0
Target(s) specified: inc
[readregistry] Registry Path Not Found! - key='Software\Microsoft\VisualStudio\VSIP\10.0\';hive='Microsoft.Win32.RegistryHive[]';
[readregistry] Registry Path Not Found! - key='Software\Microsoft\VisualStudio\VSIP\10.0\';hive='Microsoft.Win32.RegistryHive[]';
[property] Target framework changed to "Microsoft .NET Framework 2.0".
[property] Read-only property "dir.hhw" cannot be overwritten.
[property] Read-only property "hhw-found" cannot be overwritten.
BUILD FAILED - 2 non-fatal error(s), 2 warning(s)
D:\wix36-sources\wix.build(65,4):
Build file 'D:\wix36-sources\test\wixtests.build' does not exist.
I have .Net framework 4.0 installed on my local. Also I searched through registry for the registry key mentioned in the error and didn't found. Am I using right version of NAnt?
Do you have all of the prerequisites as described in the documentation?
In order to fully build WiX, you must have the following Frameworks and SDKs installed:
NAnt (0.90 or later)
The following components from the Windows SDK for Windows Server 2008 and .NET Framework 3.5, Visual Studio 2008, Microsoft Windows 7 SDK, and/or Visual Studio 2010:
x86 and x64 compilers, headers and libraries
IA64 headers and libraries are optional, but they are necessary for IA64 custom action support
If you want to be able to build optimized IA64 binaries, you'll need both the Windows SDK for Windows Server 2008 and .NET Framework 3.5 SDK AND Visual Studio 2008 installed; or the Microsoft Windows 7 SDK AND Visual Studio 2010.
HTML Help SDK 1.4 or higher [installed to Program Files or Program Files (x86)]
The missing registry key seems to be related to the VisualStudio SDK - you don't need this for basic WiX.
If you have all of the prerequisites, try passing the -debug switch to Nant for more detailed debugging output.
To solve this problem:
[readregistry] Registry Path Not Found! - key='Software\Microsoft\VisualStudio\VSIP\10.0\';hive='Microsoft.Win32.RegistryHive[]';
[readregistry] Registry Path Not Found! - key='Software\Microsoft\VisualStudio\VSIP\10.0\';hive='Microsoft.Win32.RegistryHive[]';
If you used Visual Studio 2010 SP1 you need Visual Studio 2010 SP1 SDK
When I use msbuild on a .NET 4.0 project it appears to attempt to build the project with .NET 3.5. I've got Visual Studio 2010 installed and the project will build just fine in VS. It seems like an easy problem, but i'm kind of stuck.
So I use the command
msbuild
C:\ProjectPath\ProjectName.csproj
and I get the error.
Build started 9/30/2010 10:19:41 AM.
Project
"C:\ProjectPath\ProjectName.csproj "
on node 0 (default targets). 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".
ResolveAssemblyReferences:
Are you sure that MSBuild 4.0 is used? Launching MSBuild from commandline you should see :
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.
If the right version isn't use, you'll have to launch MSBuild inside Visual Studio 2010 Command Prompt or put .NET 4 directory (%windir%\Microsoft.NET\Framework\v4.0.30128) in your path.
You are probably using msbuild.exe from the 3.5 directory. Instead use msbuild.exe under %windir%\Microsoft.NET\Framework\v4.0.30128. If you open a Visual Studio command prompt from VS 2010 start menu under VS Tools this path will be on your %path%.