PowerShell Version
|
Release Date
|
Default Windows Versions
|
Available Windows Versions
|
PowerShell 1.0
|
November 2006
|
Windows Server 2008 (*)
|
|
PowerShell 2.0
|
October 2009
|
Windows 7
Windows Server 2008 R2 (**) |
|
PowerShell 3.0
|
September 2012
|
Windows 8
Windows Server 2012 |
|
PowerShell 4.0
|
October 2013
|
Windows 8.1
Windows Server 2012 R2 |
|
PowerShell 5.0
|
April 2014 (***)
|
Windows 10
|
Just Another TFS Blog
Sunday, July 3, 2016
Windows and PowerShell versions
Although it's written all over the net i just felt i had to put it also, it makes life easier when using the TFS2015 builds and you know what is missing....
Saturday, April 23, 2016
vNext Build Git
The new TFS2015 Build system is very powerful and easy to use.
but there are still no tasks for git integration and we are forced to use batch / Power Shell scripts.
commit / push
when a git is cloned by the build it creates a detached head (temporary branch)
do this (case sensitive):
git commit "<files>" -m "comment"
git branch -a // show all branches optional
git rebase HEAD <branch name>
git push origin <branch name>
** make sure the build agent user has "Exempt from policy enforcement" set to allow otherwise the push will fail if branch policies exist.
Warning
I have noticed that using pull request with a build policy and the build performs updates to the repository causes the pull request to not function correctly as rebase also pushes the pull request.
branch polices
Although written, for all new users to Git, Visual studio will not let you create a Pull request
(available since VS2015.1) from the same branch locally to the same branch remotely.
the ideal way is to use git flow and create pull request from develop to master
but there are still no tasks for git integration and we are forced to use batch / Power Shell scripts.
commit / push
when a git is cloned by the build it creates a detached head (temporary branch)
do this (case sensitive):
git commit "<files>" -m "comment"
git branch -a // show all branches optional
git rebase HEAD <branch name>
git push origin <branch name>
** make sure the build agent user has "Exempt from policy enforcement" set to allow otherwise the push will fail if branch policies exist.
Warning
I have noticed that using pull request with a build policy and the build performs updates to the repository causes the pull request to not function correctly as rebase also pushes the pull request.
branch polices
Although written, for all new users to Git, Visual studio will not let you create a Pull request
(available since VS2015.1) from the same branch locally to the same branch remotely.
the ideal way is to use git flow and create pull request from develop to master
Wednesday, January 6, 2016
Running old XAML build templates on TFS 2015 build server
Recently i arrived to help a client in upgrading their TFS2012 to TFS2015 Update 1.
the upgrade passed successfully without any issues.
however when we tried to run the builds we often got an error the template could not be loaded.
So first thing i did was to verify all the custom build assemblies were upgraded and don't contain "microsoft.teamfoundation.dll" as this assembly is not included since TFS2013 (merged to microsoft.Teamfoundation.Client). sadly this did not help.
after long try and error (google was no help here :(), i found this to be a reference written in the XAML it self.
i opened the XAML in Notepad and found,
there is a section called "TextExpressions.ReferancesForImplementation" there i found
<AssemblyReference>Microsoft.TeamFoundation</AssemblyReference>
removing this line fixed the problem and the template was able to load
hope this will help you also...
the upgrade passed successfully without any issues.
however when we tried to run the builds we often got an error the template could not be loaded.
So first thing i did was to verify all the custom build assemblies were upgraded and don't contain "microsoft.teamfoundation.dll" as this assembly is not included since TFS2013 (merged to microsoft.Teamfoundation.Client). sadly this did not help.
after long try and error (google was no help here :(), i found this to be a reference written in the XAML it self.
i opened the XAML in Notepad and found,
there is a section called "TextExpressions.ReferancesForImplementation" there i found
<AssemblyReference>Microsoft.TeamFoundation</AssemblyReference>
removing this line fixed the problem and the template was able to load
hope this will help you also...
Tuesday, October 6, 2015
TFS2015 API
Microsoft has taken a twist in their API as it now can work in 2 modes:
also now you need to install Nuget packages to get the TFS API dlls.
taken from: https://www.visualstudio.com/en-us/integrate/get-started/client-libraries/dotnet
as seen in the above table you will need to install the "Microsoft.TeamFoundationServer.ExtendedClient" package to upgrade your old TFS apps.
this package also installs the other packages.
the down side of using these packages is that you get all the references that it contains and you need to remove unnecessary ones (there will be a lot of them).
example for using REST objects can be found at: https://www.visualstudio.com/en-us/integrate/get-started/client-libraries/samples
- Soap - same objects as before
- REST - new to TFS 2015, new objects which usually end with "HttpClient"
also now you need to install Nuget packages to get the TFS API dlls.
Package | Description | Primary usage |
---|---|---|
Microsoft.TeamFoundationServer.ExtendedClient | Integrate with Microsoft Team Foundation Server (2012, 2013, 2015) and Visual Studio Online from desktop-based Windows applications. Work with and manage version control, work items, and build, and other resources from your client application. | Existing Windows apps leveraging an older version of the TFS Client OM. |
Microsoft.TeamFoundationServer.Client | Integrate with Team Foundation Server 2015 and Visual Studio Online from desktop-based, ASP.NET, and other Windows applications. Provides access to version control, work item tracking, build, and more via public REST APIs. | Window desktop apps and services that need to integrate with TFS 2015 and later and Visual Studio Online. |
Microsoft.VisualStudio.Services.Client | Integrate with Team Foundation Server 2015 and Visual Studio Online from desktop-based, ASP.NET, and other Windows applications. Provides access to shared platform services such as account, profile, identity, security, and more via public REST APIs. | Windows desktop apps and services that need to interact with "shared platform" services (account, profile, identity, security, etc). |
Microsoft.VisualStudio.Services.InteractiveClient | Integrate with Team Foundation Server 2015 and Visual Studio Online from desktop-based Windows applications that require interactive sign-in by a user. | Windows desktop applications not utilizing basic authentication or OAuth for authentication. |
as seen in the above table you will need to install the "Microsoft.TeamFoundationServer.ExtendedClient" package to upgrade your old TFS apps.
this package also installs the other packages.
the down side of using these packages is that you get all the references that it contains and you need to remove unnecessary ones (there will be a lot of them).
example for using REST objects can be found at: https://www.visualstudio.com/en-us/integrate/get-started/client-libraries/samples
ImDisk Simple USB Drive
ImDisk is a dll which contains methods to emulate various storage devices (HDD, USB, CD).
unfortunately I haven't seen any seen any examples that i can use.
although there is a very detailed documents on the methods
http://www.ltr-data.se/library/ImDiskNet/html/b33f1e89-3d92-fc08-248d-14c5c2efd549.htm
so here is a simple example how to create a USB drive and disconnect it
// get device handle and free drive letter
uint deviceID = 0;
IntPtr statusControl = IntPtr.Zero;
string driveLetter = ImDiskAPI.FindFreeDriveLetter() + ":";
// create device
// 40mb = 4096*1024*10
ImDiskAPI.CreateDevice(4096 * 1024 * 10, 0, 0, 0, 0, ImDiskFlags.Removable , @"USB", false, driveLetter, ref deviceID, statusControl);
Console.ReadKey();
// remove device
ImDiskAPI.APIFlags = DLL.ImDiskAPIFlags.ForceDismount;
ImDiskAPI.RemoveDevice(driveLetter);
unfortunately I haven't seen any seen any examples that i can use.
although there is a very detailed documents on the methods
http://www.ltr-data.se/library/ImDiskNet/html/b33f1e89-3d92-fc08-248d-14c5c2efd549.htm
so here is a simple example how to create a USB drive and disconnect it
// get device handle and free drive letter
uint deviceID = 0;
IntPtr statusControl = IntPtr.Zero;
string driveLetter = ImDiskAPI.FindFreeDriveLetter() + ":";
// create device
// 40mb = 4096*1024*10
ImDiskAPI.CreateDevice(4096 * 1024 * 10, 0, 0, 0, 0, ImDiskFlags.Removable , @"USB", false, driveLetter, ref deviceID, statusControl);
Console.ReadKey();
// remove device
ImDiskAPI.APIFlags = DLL.ImDiskAPIFlags.ForceDismount;
ImDiskAPI.RemoveDevice(driveLetter);
Monday, December 29, 2014
TFS2013 Web.Config Transformation in Build
Hi
i have been looking around how to create web.config transformation when using tfs build.
there are 3 options:
/p: TransformConfigFiles=true
just don't forge, if you are using TFS2013 with old build templates (2010/2012) you will also need to add "/p:VisualStudioVersion=12.0"
i have been looking around how to create web.config transformation when using tfs build.
there are 3 options:
- Use publish profile - this is done by creating a publish profile (right click on the project and select publish), then add to the build definition, "MSBuild Arguments"
- Add "xmlTransform" task to the csproj - open the csproj file for edit (Unload and edit) and add right before the end
<Target Name="TransformConfigFiles" AfterTargets="AfterBuild" Condition="'$(TransformConfigFiles)'=='true'"> <ItemGroup> <DeleteAfterBuild Include="$(WebProjectOutputDir)Web.*.config" /> </ItemGroup> <TransformXml Source="Web.config" Transform="$(ProjectConfigTransformFileName)" Destination="$(WebProjectOutputDir)Web.config" /> <Delete Files="@(DeleteAfterBuild)" /> </Target>in order to control this, you need to add to the build definition, "MSBuild Arguments"
/p: TransformConfigFiles=true
- Force MSBuild to run Config transformation - this is done by add to the build definition, "MSBuild Arguments"
just don't forge, if you are using TFS2013 with old build templates (2010/2012) you will also need to add "/p:VisualStudioVersion=12.0"
Saturday, November 22, 2014
Import Unit Tests to Test Cases
Using UI Automation and Unit tests in general is a good thing,
but VS does not provide a simple way of associating the tests to test cases.
you have to open a test case and associate the unit test, for one, two it ok,
for more then 10 its very tedious
in VS2010 we had a nice extesion called "Pronto",
in VS 2012 and above this does not work any more.
luckly the TCM command comes very handy here:
tcm testcase /import /collection:http://mytfs:8080/tfs/mycollection /teamproject:"myTeamProject" /storage:"fullpath_to_UT_DLL" [/filter:"test category"] [/syncsuite:"test suite id to update"]
this command will pass over all matching unit tests in the dll and add / update testcases.
MSDN TCM link : http://msdn.microsoft.com/en-us/library/ff942470.aspx
but VS does not provide a simple way of associating the tests to test cases.
you have to open a test case and associate the unit test, for one, two it ok,
for more then 10 its very tedious
in VS2010 we had a nice extesion called "Pronto",
in VS 2012 and above this does not work any more.
luckly the TCM command comes very handy here:
tcm testcase /import /collection:http://mytfs:8080/tfs/mycollection /teamproject:"myTeamProject" /storage:"fullpath_to_UT_DLL" [/filter:"test category"] [/syncsuite:"test suite id to update"]
this command will pass over all matching unit tests in the dll and add / update testcases.
MSDN TCM link : http://msdn.microsoft.com/en-us/library/ff942470.aspx
Subscribe to:
Posts (Atom)