Visual Studio 2010 Deployment Project supported by MSBuild - visual-studio

Do you know if there is anyway to deploy a VS2010 Deployment Project using msbuild? Is is supported? I know it was not for a long while but I couldn't find is something change.
If not, is WIX the only approach?

You can build a deploy project - i assume you mean a vdproj? But not directly with msbuild. You have to wrap an exec target around devenv.exe. So you'd have to have visual studio on your build machine.

Related

.netstandard2.1, AndroidQ and TFS build

I have updated my Android app target from Android 9 to Android 10 (in accordance with Google Play requirements) recently, and now solution doesn't build on TFS with error:
C:\Program Files\dotnet\sdk\5.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets(241,5): Error NETSDK1005: Assets file '...\obj\project.assets.json' doesn't have a target for 'netstandard2.1'. Ensure that restore has run and that you have included 'netstandard2.1' in the TargetFrameworks for your project.
There is the library in the solution that really targets to netstandard2.1, but:
I can build the solution on my desktop with Visual Studio Community 2019 16.4.6.
I can build the solution on TFS server remotely with Visual Studio Community 2019 16.5.1 and 16.8.2.
I cannot build the solution on TFS server via TFS interface. In the build pipeline there is an item Build Xamarin.Android Project which uses MSBuild from C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin location (I presume VS should use this MSBuild file too during manual build). The MSBuild file has version 16.8.2.56705.
With the target Android 9 there was no issues with solution building.
What could be a reason? Thank you in advance.
I followed this recommendation to update nuget.exe to the latest version and it helps. But I'm still wondering why simple target's updating without VS update broke a build.

Is it a good idea to use MSBuild for Visual Studio projects

I'm new to .net and want to use a build tool for my project. I'm reading about MSBUILD and other options but recently came to know that Visual studio projects are MS Build scripts.
So, that makes me think, should I really use MSBUILD for Visual studio projects ?
Visual Studio uses MSBuild under the hood and the project system is based on it.
There are a few other tools that help with .NET builds, like Cake, but for the most important part, they also call MSBuild (but help you to script it for complex scenarios).
There really isn't an alternative to MSBuild since all tools (VS, JetBrains Rider, OmniSharp (/VSCode)) require it to understand C#/VB.NET projects.
should I really use MSBUILD for Visual studio projects ?
Obviously, we can also use devenv.exe, csc.exe or other compilers for Visual Studio projects except MSBuild. But just as Martin`s answer, all tools (VS, JetBrains Rider, OmniSharp (/VSCode)) require it to understand C#/VB.NET projects. And Visual Studio hosts MSBuild to load and build managed projects. Because MSBuild is responsible for the project, almost any project in the MSBuild format can be successfully used in Visual Studio.
With MSBuild, you could build projects on a build server for .NET apps without Visual Studio.
Besides, MSBuild will give you significant flexibility in choosing what technologies you use to implement continuous integration. And custom MSBuild tasks will give you even more flexibility in implementing custom builds.
What more, If Visual Studio Team System is in your future, applications built using MSBuild will be much easier to move into that environment than those built via alternative means.
Though, we can build Visual Studio project by using other ways, it is absolutely a good idea to use MSBuild for Visual Studio projects.
Hope this can help you.

Can I run TFS automated builds using both VS2010 and VS2012?

We currently use TFS 2010 and have numerous build definitions for our various version of our software. We want to use VS2012 for our next version(still using TFS 2010) so is it possible to have both versions of VS on a build controller and will the build process know which version of VS to use or will we need one build controller for VS2010 and one for VS2012? Also I have custom build templates will that present any issues? Then what happens when we upgrade to TFS 2012? will we be able to run automated builds using both VS2010 and VS2012??
In general - yes. Actually Visual Studio doesn't build anything. It's the underlying MSBuild engine that handles the build tasks.
Furthermore, you can setup a build machine without Visual Studio at all, provided that your project don't hold direct references to Visual Studio references paths (e.g. C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ReferenceAssemblies). If there are such references you can copy them to your 3rd party\lib directory in the source control and have the projects refer to that directory as file references.
Other notes:
But Visual Studio will hardly be your biggest hindrance. It's
multi-targeting .NET that will require some extra caffeine :)
The build templates will work as long as you satisfy their custom
references (GAC can used for that matter)
A build controller can be registered with one server at a time
Use a build server for each target framework\VS version

MSBuild calling the Package Target of Web Project

Does anyone know the components that need to be installed in order to make the Package Target available via MSBuild.
It's possible to Package using MSBuild on a machine with Visual Studio installed, but not on a build server with only the .NET 4 SDK and Web Deploy 2.0 installed, which results in the following error:
msbuild "Package" does not exist in the project.
It partly comes down to the following missing files on the server:
c:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web\*.*
This can of course be resolved by copying the contents of the MSBuild VisualStudio folder to the equivalent directory on the build server, but this is not a manageable solution for server configuration.
All the answers I've read involve having Visual Studio installed or copying the files. Surely it's possible to compile the Web Deploy package without installing Visual Studio?
I have a TeamCity CI server without VS installed building a Web Project configured to also create a deployment package on successful build. However, for the life of me I can't recall if I copied those files manually or if they were installed by some component.
The relevant components I have installed are the following, if you want to give it a shot:
.NET 4.0 SDK;
Microsoft Visual Studio 2010 Shell (Integrated) Redistributable Package;
Visual Studio 2010 SDK; (Not the VS 2010 SDK SP1)
Microsoft Visual Studio 2010 Visualization & Modeling SDK;
Web Deploy 2.0;
I installed the VS Shell in order to be able to install the VS 2010 SDK which in turn was required in order to install the Visualization & Modeling SDK so that I was able to run T4 transformations on the build server.
With this components and configuring the following MSBuild properties DeployOnBuild=true;DeployTarget=Package to create the deploy package I had no problems, but as I said earlier I may have copied the files manually after giving up all hope of finding a more cleaner solution and now my brain is blocking any memory of such ill action.

How teamcity builds project and requirements of msdeploy on client machine

Just want to know whether msbuild is built in teamcity or teamcity uses the installed msbuild.exe on your build machine. I have no visual studio installed on my build machine. Little bit confused as where to locate msbuild.exe on machine if no visual studio installed.
Also requirements of msdeploy on client machine. Plz clarify.
TeamCity does not provide the compilers for any language, just the integration support to bring those tools together. For MSBuild specifically, you'll need the .NET framework installed, or Visual Studio:
MSBuild ships as part of the .NET Framework, starting with v2.0 in Visual Studio 2005 and updated in v3.5 with Visual Studio 2008.
Alternatively, you can make use of the Mono support that TeamCity provides to go down that road.

Resources