2016-07-01 7 views
0

Microsoft SharePoint 사용자 지정 응용 프로그램 페이지에서 Microsoft Project Server ProjectServerServices.dll을 호출하려고합니다. PSI를 사용하여 PWA 정보에 액세스하려고합니다.'ProjectServerServices.dll'을 호출하려고하면 "강력한 이름의 어셈블리가 필요합니다." 오류

이 내 예제 코드입니다 :

using System; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using Microsoft.SharePoint; 
using Microsoft.SharePoint.WebControls; 
using PSLibrary = Microsoft.Office.Project.Server.Library; 
using SvcProject; 
using SvcQueueSystem; 

namespace PWA.PSI.Test1.Layouts 
{ 
    public partial class GetProjectList : LayoutsPageBase 
    { 
     private const string ENDPOINT_PROJECT = "basicHttp_Project"; 
     private const string ENDPOINT_RESOURCE = "basicHttp_Resource"; 

     private static ProjectClient projectClient; 
     private static SvcResource.ResourceClient resourceClient; 

     protected void Page_Load(object sender, EventArgs e) 
     { 
      ConfigClientEndpoints(ENDPOINT_PROJECT); 
      ConfigClientEndpoints(ENDPOINT_RESOURCE); 

      Guid myUid = resourceClient.GetCurrentUserUid(); 

      lit.Text = "My GUID: " + myUid.ToString(); 

      // Get list of all projects. 
      SvcProject.ProjectDataSet projectDs = projectClient.ReadProjectStatus(
       Guid.Empty, SvcProject.DataStoreEnum.WorkingStore, 
       string.Empty, (int)PSLibrary.Project.ProjectType.Project); 

      SvcProject.ProjectDataSet tempProjDs = null; 

      // Create an empty ProjectDataSet for projects the user owns. 
      SvcProject.ProjectDataSet myProjectsDs = (SvcProject.ProjectDataSet)projectDs.Clone(); 

      for (int i = 0; i < projectDs.Project.Count; i++) 
      { 
       tempProjDs = projectClient.ReadProject(projectDs.Project[i].PROJ_UID, 
        SvcProject.DataStoreEnum.WorkingStore); 

       if (tempProjDs.Project[0].ProjectOwnerID == myUid) 
       { 
        lit.Text += "</BR>Project -- " + tempProjDs.Project[0].PROJ_NAME ; 
        myProjectsDs.Project.ImportRow(
         (SvcProject.ProjectDataSet.ProjectRow)tempProjDs.Project[0]); 
       } 
      } 
     } 

     public static void ConfigClientEndpoints(string endpt) 
     { 
      if (endpt == ENDPOINT_PROJECT) 
       projectClient = new SvcProject.ProjectClient(endpt); 
      else if (endpt == ENDPOINT_RESOURCE) 
       resourceClient = new SvcResource.ResourceClient(endpt); 
     } 
    } 
} 

내가 셰어 이내에 사용자 정의 응용 프로그램 페이지를 열 때 다음과 같은 오류 메시지를받을

파일이나 어셈블리를로드 할 수 없습니다 'ProjectServerServices, 버전 = 0.0.0.0, Culture = neutral, PublicKeyToken = null '또는 해당 종속성 중 하나입니다. 강력한 이름의 어셈블리가 필요합니다. (예외는 HRESULT : 0x80131044)

여기서 뭐야?

답변

0

당신은

sn -k mykey.snk 

는 다음 .DLL보다

%CSC% /t:library /out:%ASSEMBLY_NAME% %SOURCE%*.cs /keyfile:mykey.snk 

%CSC% /t:library /out:%ASSEMBLY_NAME% %SOURCE%*.cs 

에서 GenWCFProxyAssembly.cmd에 다음 줄을 변경 키 강력한 이름을 만들 먼저해야합니다 강한 이름으로 모은다.