Is it possible to use variables like $(Release.ReleaseName) in the multiline edit fields of the release definition edit form in TFS 2017 like shown here? It seems not to be working as expected.
You are using the TFS2017 Update1 RTM, got the same result as you. It seems not support on this version.
Suggest you to update your TFS2017 to latest version Update3 RC, it works fine. The variable expand as expected.
Related
I updated to Visual Studio 2015 when it was released last week. Resharper suggested that I might like to update the following string using string.Format:
string filePath = HttpContext.Server.MapPath(string.Format("~/App_Data/{0}.xlsx", Guid.NewGuid()));
To use string interpolation:
string filePath = HttpContext.Server.MapPath($"~/App_Data/{Guid.NewGuid()}.xlsx");
I did this, and all is well.
However I've broken the build on TFS:
Controllers\MyController.cs (224):
Unexpected character '$'
So it seems like the new features in C# 6 can't be compiled by our older, non-updated version of TFS.
The project is still targeted at using the Framework 4.5 however, I have not targeted 4.6. I (wrongly) assumed that still targeting the old framework would mean it could be built by other team members still using VS2013 along with our TFS build server.
So it looks like our TFS needs an update of... something.
What do I need to install on the TFS server to have it compile this new syntax? The latest version of the .NET Framework or something else?
Install .NET Framework 4.6 and Build Tools 2015 on your build server.
Then override the ToolsVersion (/tv:14.0) in MSBuild arguments.
Unfortunately, there doesn't appear to be an easy way to get older versions of TFS working with C# 6.0 without installing VS2015 on the TFS build server. If you can do that, I would suggest that. If, for whatever reason, you cannot, then the following worked for me:
I followed the instructions of the other answer, but that alone didn't work. I also had to edit the default TFS build process template (which in my case is found in $//BuildProcessTemplates) and change the ToolPath properties of the "Run MSBuild for Project" nodes to the location of MSBuild 14.0 (which usually is C:\Program Files (x86)\MSBuild\14.0\Bin).
You will then need to update your build definitions to use the new build template (if you had copy/edited a new one vs editing the original one).
At this point, you should be able to build C# 6 projects with TFS, but if you're trying to do web deployment/packaging as well, then there are still a few more steps.
On the build server, at C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0, there should be a Typescript folder and nothing else. On your local machine with VS2015, go to the same path. There should be a Web and WebApplications folder. Copy those over to the server's folder. You should now be able to package/deploy web projects as well.
Please check to see if "Run MSBuild for Project" exists more than once within your TFS Build process template. In my case it existed twice and took me awhile to figure out why the change for ToolPath was not taking the desired effect.
How does your team differentiate TFS work items that are "done" (development/testing complete) vs. "deployed" (live in Production)?
My first option would be to use a Tag to mark this. You can query and filter through them.
Another option would be to customize the work item types with an additional field, but this route is a bit more complex.
Change your Definition of Done to include: Deployed. Doing that you will have code working in production. If is needed more work, is not done.
But I guess you´re asking about how to have a new status. You can modify the workflow template to include this new state. In older versions of TFS you only can do that before to create the project, not in an started project. I don´t know in the latest version.
The default build template for TFS has a format of $(BuildDefinitionName)_$(Date:yyyyMMdd)$(Rev:.r)
This translates to something like BuildName_20141111.1 for the first build of the day, BuildName_20141111.2 for the second and so on that.
That's all well and good but what I'd like to do is pull out that .r and insert it into the assembly before it's compiled by the build server.
I've already edited the build template to update the various AssemblyInfo.cs files and such and that's working fine. Right now we are toying with the idea of Major.Minor.yyDDD (Day of year).r but the catch is that very last part - how do we get $(Rev:.r) from within a build template?
I've tried looking through the various environmental variables and I can pull out the entire Build definition string (i.e. BuildName_20141111.1) but really all I want is that .1 (or more specifically "1"). Is there a way to do this programmatically? Is there an environment variable I've missed? Or is there a way that I can actually access things like $(Rev:.r) directly?
I am relatively new to TFS but this is the last hurdle before I can move a lot of projects to it.
You effectively need to parse this off yourself from the BuildName parameter. If you are using TFS 2013 you can do it in PowerShell. Prior versions need a customized build template.
There are prebuilt solutions to this. Best is the TfsVersion activity or the VersionAssemblies.ps1 that is provided as part of the TFS Community Build Tools.
I was setting up a new build definition today and noticed there is an option 'Copy build output to the following Source Control folder'. I don't believe I have seen this before. It appears to me from searching google that it might be new as of TFS 11 (AKA TFS 2012) which I do not have installed on my system (or any system in my company network to my knowledge). My company uses TFS 2010 right now.
I went to another user who is able to view build definitions and it also was present when the build definitions were viewed.
This is what i see:
My questions:
1) Was this a part of TFS 2010 and I am just not remembering seeing it?
2) If this IS part of TFS 2010, how to enable this option (it is disabled).
3) If this is NOT a part of TFS 2010, how did it get there?
Yes, it is part of TFS 2010, but I have no idea how it got here!
I believe this is for those who use TFS 'as a service' (when you
have no file share to copy it to). According to
how-can-i-copy-build-output-to-the-source-control-folder
I have this in TFS/VS 2010 (SP1):
I'm working in a project and I'm trying to optimize testing process so, when I execute a test case and I found a bug, I would like to associate this bug to the current build.
The builds are created automatically but when I try to select the built in the droplist there are not builds to select, so... How can I do it to get all the builds that I've made automatically?
Maybe is there any issue with Global List?
Im using VS 2010 and I have installed TFS 2010 Power Tools.
Thanks in advance!!
The global list is normally updated by an event subscription on the server that handles the BuildCompleted event. On your TFS server, there should be an executable named BisSubscribe.exe. You can use that to verify or fix the subscription. For more details, check out Jason Prickett's blog post on How to filter the Build Completion Event.