Since I currently have some developer tasks related to PS and heard a lot about this new API, I decided to try it out. The very first step was to create a trial subscription of Project Pro for Office 365. Next, I attempted to download the Project 2013 SDK, but clicking the Continue button (after signing in) caused a 404 – Page not found error. Jim Corbin from Microsoft helped me with a direct link to download the file.
Starting the installer on my Windows 8 developer VM, it first downloaded the Document Explorer as a pre-requisite, and as a pre-requisite of the pre-requisite the ‘.NET Framework 3.5 (includes .NET 2.0 and 3.0)’ Windows feature was activated. There are some tricks around installing the SDK on W8 as well.
To get the sample solutions, you have to start Samples.exe from the C:\Program Files (x86)\Microsoft SDKs\Project 2013\Samples folder, and extract the files to a location like C:\projects\PS2013Samples. Extracting the files to the same Samples folder might not be a good idea, as the extractor has issues due to the protection of the Program Files directory, and Visual Studio does not like opening solutions from the Program Files folder either.
So far, so good. Let’s see finally some action with code!
I opened one of the sample solutions (ReadProjectList) and fixed the broken assembly reference to Microsoft.ProjectServer.Client by copying the corresponding dll from the REDIST folder of the SDK to a Library folder in my projects folder and updating the reference in the project. The project build succeeded, however, I received the following error when starting the application:
Could not load file or assembly ‘Microsoft.ProjectServer.Client, Version=220.127.116.11, Culture=neutral, PublicKeyToken=71e9bce111e9429c’ or one of its dependencies. Strong name validation failed. (Exception from HRESULT: 0x8013141A)
I tried to analyze the reasons using the Fusion log, but what I found there did not helped me to solve the issue, so I simply skip this part now.
My next try was to install Microsoft.ProjectServer.Client to the Global Assembly Cache, but it failed with the following error message:
Failure adding assembly to the cache: Strong name signature could not be verified. Was the assembly built delay-signed?
I’ve checked the digital signature of the assembly and found this information there:
The certificate was displayed like this (note the Valid to date 1/4/2014 as well!):
I found the names Microsoft Testing Root Certificate Authority 2010 and MSIT Test CodeSign CA 3 a bit strange for a library aimed to be used in production.
I’ve installed the certificate in the Trusted Root Certification Authority of both the Current User and Local Computer on my VM, that solved the issue of the digital signature of the assembly:
However, I still was not able to install the assembly to the GAC, and the issue running the application was not solved.
I had to register the Microsoft.ProjectServer.Client assembly for verification skipping (seems to be the key step in problem resolution):
sn -Vr Microsoft.ProjectServer.Client.dll
then I was able to add the assembly into the GAC (probably optional step):
gacutil -if Microsoft.ProjectServer.Client.dll
It solved the issue of starting the application in Visual Studio. Although this workaround helped me to concentrate my efforts to my original goal (playing with CSOM of PS 2013), I really would not like to apply the same fix in a production environment.