Visual studio postbuild event xcopy and checkout files - tfs

I'm using Post build event in Visual Studio to copy some .js files from a project to another using xcopy. I'm even using the \r option to overwrite any existing files. That has been achieved! It's copies the desired files to the destination directory, overwriting the existing files, but the problem is, despite changing the 'destination' files, doesn't check them out in TFS.
Is there a solution for checking out the 'destination' files automatically so I can be able to check in the correct version of those files to the server?
Tks

You could use the TF.exe command to checkout the files on the commandline:
c:\pi>tf checkout /type:text page.xsl
https://msdn.microsoft.com/en-us/library/1yft8zkw(v=vs.100).aspx

Related

TFS programatically find and use files from last build

I am new to TFS. I have two builds on TFS, one is the main solution which spills out .exe files, the other a Wix installer solution that grabs files from the main solution. Right now I use a temp file folder and post/pre build events to receive/feed these .exe files.
Can I streamline this process on TFS? I'd like the installer to
Main solution generates a meaningful file path for each build, ideally related to build number.
Installer solution can find file path of the last successful build of main solution programmatically.
Make this file path available as a build variable or something so it knows where to grab files when building.

Can we create TFS build definition of website without .proj file

I am using TFS 2015 for creating builds of application. I am able to create build template for web application as web application have both .sln and .proj.
But for Websites, I only have .sln file and no .proj.
How can I create Build definition in TFS 2015 for website having only .sln file?
As #Cece said, the answer is yes, you can run the MSBuild on the server without a .csproj.
I am assuming that your project is not running on the final version of the .Net Framework. In your case I suggest you to make this change
https://stackoverflow.com/a/42493822/819153
Then you should copy all the files from the PrecompiledWeb folder, and there you should find your .sln
Sometimes there are vb/cs projects that I have seen that they do not come with a project file, csproj or vbproject. They run with the .NET Framework 2.0. For those, you can create a build definition just to compile the .sln, but when you deploy the application, you need to copy the entire PrecompiledWeb folder to the IIS folder on your server. Try to add the task that has the option copy and publish and put all the changes to your server.
Check the privilege of the folder where you want to put the files, and be sure that the agent that is running the builds on the TFS has access READ/WRITE access to the server folder.
In your case, please check the .sln file, inside of it you should have a TargetPath, by default is PrecompiledWeb, but sometimes when you run the msbuild on the tfs you end with an error saying that the PrecompiledWeb can't be on the same tree of your solution, what you need to do then is putting a level up of your solution folder
Debug.AspNetCompiler.TargetPath = "..\..\PrecompiledWeb\YourProject"
Then on your CopyTask you need to change the CopyRoot directory, if you made any transformation before your build step to the webconfig, those transformations will be reflected on the PrecomiledWeb\YourProject. All the files in that folder should be deployed to the server folder path.
Lets say that you have this structure in your Branch
Branch/MyProject, then after you compile the source code on the TFS, your precompiled folder will be stored at the same level of your project on the agents folder. Please see the picture below to get the idea how to copy the files from the PrecompiledWeb.
The answer is Yes. You can create a build definition for a WebSite project by specifying the .sln file.

TFS Build Template Copy Directory and Exclusion of files

I have TFS Build Default Template and I added to it, between "Run on Agent' and "Check In Gated Changes for CheckInShelveset Builds", Copy Directory with Source BuildDetail.DropLocation and destination a shared directory on a server.
My problem comes that the Copy Directory is not executed or is executed, but no files are copied.
I am not sure if this is the right location to place this activity, but as I read the tutorial in msdn it seems correct. How can I force the built version of the web site be copied in a specific directory, and on a separate note is there a way to exclude some files from the copy? I wish to copy the built web site without copying the web.config file.
You can use copy activity which OOB and also if you use TFS 2013 default template it has post build activity which can run powershell

Choose what goes to drop folder of TFS build

I have a drop folder created by TFS build which contains all the produced artifacts:
.dll \ .config \ .pdb files from all projects
_PublishedWebsites folder
*.msi files produces by Wix projects
All I really care about is *.msi files as everything I deploy is in them.
How can I specify for the TFS build not to bother with all the other files in the Drop folder?
I know I can customize the build to delete files after the solution build, but maybe there is a clever way of disabling them at all?
Personally I use named platforms such as Application and Setup in my SLNs so that when TFS archives the drop folder one class of files goes into one directory structure and another class of files goes into another. This way it's easy to find the MSI and it's also easy to see what the application code looked like before then. (Perhaps the contents of a web.config or an HTML that was added to the application sln but not the installer sln.
IF you want to suppress the application sln from archiving you have to look at that. It's not an MSI / WiX thing.
If you are using TFS 2013 (or VSO) you can easily have a PowerShell executed post build to do whatever clean up and rearranging you need.
Note: The build used the files in the root to do testing, code analysis, test impact analysis, and other automatic actions. Make sure that you only remove files after all of the checks. A better idea is to leave the files be and just push theb*.msi files to a "/_PublishedApplications/* folder.
There is a PublishedApplication Nuget package that can make this easyer. Take a look...
If you are using TFS 2010/2012 you can use the "TFS Community Build Tools" to call PowerShell and do other things.

exclude bin folder from Team Explorer Everywhere

How can I exclude the bin folder from Check in and Check Out from TFS version control in the TFS plug-in for Eclipse?
The bin folder should already be ignored by TFS unless everywhere is configured differently. Do possibly mean that the bin folder is already checked in and you don't want to manipulate it any more? If that is the case simply delete the bin from tfs and it will stop prompting you for check out/check in. Bin folders typically are not under source control
You can use a .tpignore file to ignore files. The easiest way to add the bin directory to your .tpignore is to simply right click on the bin directory in Package Explorer and select the "Ignore" option in the Team menu.
I had the same problem, I added the following to the .tfignore file
/bin/
/bin/.*
/bin/classes/*
I had to include the classes directory explicitly because it continued to appear in the pending changes.

Resources