2008-11-17 19 views

Trả lời

3

Vì vậy, như một sự theo dõi cuối cùng cho câu hỏi này ở đây là những gì chúng tôi cuối cùng đã làm để hoàn toàn tự động hóa quá trình này.

Chúng tôi đã làm như đã đề xuất, sử dụng phần tử ApplicationResourceFile trong tệp kê khai.

<?xml version="1.0" encoding="utf-8"?> 
<Solution SolutionId="{185E973C-3A10-4e2a-9E0F-DC14414551F9}" 
      xmlns="http://schemas.microsoft.com/sharepoint/" 
      DeploymentServerType="WebFrontEnd"> 
    <ApplicationResourceFiles> 
    <ApplicationResourceFile Location="yourappname.resx"/> 
    <ApplicationResourceFile Location="yourappname.en-US.resx"/> 
    </ApplicationResourceFiles> ... 
</Solution> 

Điều này đã thực tế đưa tệp vào thư mục "tài nguyên". Vì vậy, chúng tôi chỉ cần truy cập các tài nguyên từ đó trong mã như vậy:

string appPath = HttpContext.Current.Request.MapPath(HttpContext.Current.Request.ApplicationPath); 
ResourceManager resX = ResourceManager.CreateFileBasedResourceManager("ResourceFileName", appPath + "resources", null); 

SPSecurity.RunWithElevatedPrivileges(delegate() 
{ 
    AddResource(resX, "DefaultTextBoxLabelText"); 

Chúng tôi chạy mã này trong hàm tạo và thêm các mục từ tệp tài nguyên vào từ điển địa phương. Bạn phải sử dụng RunWithElevatedPrivileges vì ​​thư mục "tài nguyên" mới được tạo chỉ có thể truy cập được bằng tài khoản AppPool.

2

Không thể triển khai tệp tài nguyên ứng dụng thông qua tính năng trừ khi bạn thực thi một số mã và bắt đầu công việc hẹn giờ SharePoint sao chép tệp vào thư mục App_GlobalResources trên mỗi máy chủ Web front-end.

Bạn nên thay cho khung giải pháp SharePoint triển khai tệp .RESX vào thư mục App_GlobalResources trên mỗi máy chủ. Bạn có thể chỉ định các file tài nguyên ứng dụng như sau trong file manifest.xml của gói giải pháp WSP của bạn:

<?xml version="1.0" encoding="utf-8"?> 
<Solution SolutionId="{185E973C-3A10-4e2a-9E0F-DC14414551F9}" 
      xmlns="http://schemas.microsoft.com/sharepoint/" 
      DeploymentServerType="WebFrontEnd"> 

    <ApplicationResourceFiles> 
    <ApplicationResourceFile Location="yourappname.resx"/> 
    <ApplicationResourceFile Location="yourappname.en-US.resx"/> 
    </ApplicationResourceFiles> 

... 
</Solution> 

Khi bạn triển khai các gói giải pháp WSP sử dụng STSADM hoặc Central Administration, khuôn khổ các giải pháp SharePoint sẽ bắt đầu một công việc hẹn giờ mà triển khai các tệp này vào thư mục App_GlobalResources của tất cả các ứng dụng web mà bạn đã quyết định triển khai giải pháp.

+0

Vì vậy, điều này dường như rất gần nhưng khi tôi sử dụng các yếu tố ApplicationResourceFile nó tạo ra một "tài nguyên" thư mục và đặt các tập tin không có trong thư mục App_GlobalResources . – webwires

+0

Theo http://www.mikhaildikov.com Tệp kê khai giải pháp WSS chứa hai phần tử có tên ngụ ý có liên quan đến việc triển khai tệp RESX. Chúng là . Thật không may họ không thực sự hữu ích và về cơ bản có thể được bỏ qua. – webwires

+0

Sigh - đây là một lỗi cũ trong SharePoint mà tôi đã chắc chắn MS cuối cùng đã cố định với bản cập nhật cơ sở hạ tầng. Tôi không thể tin rằng nó vẫn còn đó! Nhưng tôi vẫn sẽ khuyên bạn nên đi cho các giải pháp trên và khởi động một công việc hẹn giờ một lần để sao chép các tập tin từ thư mục tài nguyên để App_GlobalResources –

0

Gần đây, chúng tôi đã gặp sự cố tương tự trong quá trình cài đặt trang trại của mình. Thật không may, việc thêm các mục ApplicationResourceFile trong tệp kê khai chỉ nhận tài nguyên của bạn vào thư mục Tài nguyên.

Trong khi bạn có thể tự triển khai các tập tin tài nguyên từ Tài nguyên để App_GlobalResources với stsadm -o copyappbincontent (phải được phát hành trên tất cả các máy chủ kết thúc trước), chúng tôi đã kết thúc việc tạo ra một công việc hẹn giờ để tự sao chép các tập tin, như được nêu here:

8

Cảm ơn tất cả các câu trả lời của bạn, nhưng là giải pháp tốt nhất cho SharePoint 2010 là sau:

  • Add New Item> Module
  • Sao chép (hoặc) Thêm file nguồn của bạn có
  • Thay đổi " Loại triển khai "thuộc tính của từng tệp tài nguyên để appGlobalResource
  • Thay đổi thuộc tính" Vị trí triển khai> Đường dẫn "thành trống để tệp tài nguyên triển khai đúng cách thành" App_GlobalResources "trong ứng dụng web của bạn

enter image description here

2

Đối với SharePoint 2010 bạn cần phải thay đổi tên nút XML vì vậy nó sẽ sao chép vào thư mục App_GlobalResources mới thay vì thư mục Resource trong C: \ inetpub \ wwwroot \ wss \ VirtualDirectories \ 80 MSDN liên kết: http://msdn.microsoft.com/en-us/library/ms463158.aspx

Ví dụ:

<Solution SolutionId="{8a2f91f2-db85-4eb3-8e7c-330f05246e1a}" 
      DeploymentServerType="WebFrontEnd" 
      xmlns="http://schemas.microsoft.com/sharepoint/"> 
    <ApplicationResourceFiles> 
     <App_GlobalResourceFile Location="yourResourceFile.resx"/> 
    </ApplicationResourceFiles> 
Các vấn đề liên quan