2009-07-02 46 views
7

Tôi gặp sự cố khi biên dịch một Ứng dụng web EPiServer sau khi kiểm tra nó ra khỏi Subversion."Mã thông báo không hợp lệ", "trong lớp, cấu trúc hoặc giao diện" sau khi thanh toán

tôi nhận được lỗi này

Compiler Error Message: CS1519: Invalid token ',' in class, struct, or interface member declaration

Nguồn Lỗi:

Line 116: } 
Line 117:  
Line 118: public virtual EPiServer.Personalization.SubscriptionInfo, EPiServerSubscription Info { 
Line 119:  get { 
Line 120:   return ((EPiServer.Personalization.SubscriptionInfo, EPiServer)this.GetPropertyValue("SubscriptionInfo"))); 

Source File:

c:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\956e6fc5\66c11597\App_Code.9_fan95p.0.cs Line: 118 

Như bạn có thể nhìn thấy từ các lỗi, tập tin này là trong "ASP tạm thời. Tập tin NET "thư mục và là một phần của quá trình xây dựng. Đây không phải là mã nguồn của tôi.

Tôi đã thấy this question điều này gợi ý rằng cấu hình web chứa gõ tài liệu tham khảo

specified in the "Namespace.ClassName, AssemblyName" format.

Vì vậy, tôi đã đi vào web.config của tôi và thay đổi phần

... 
<profile ...> 
    <properties> 
     ... 
     <add name="SubscriptionInfo" 
      type="EPiServer.Personalization.SubscriptionInfo, EPiServer" 
      provider="SqlProfile" /> 
     ... 

để

... 
<profile ...> 
    <properties> 
     ... 
     <add name="SubscriptionInfo" 
      type="EPiServer.Personalization.SubscriptionInfo" 
      provider="SqlProfile" /> 
     ... 

Điều này loại bỏ các lỗi ngay lập tức ở trên nhưng sau đó tôi đã nhận lỗi tương tự cho một khác loại erent. Vì vậy, tôi đã xem xét tất cả các loại ở định dạng "Namespace.TypeName, AssemblyName" và đã xóa ", AssemblyName". Đây ngừng tất cả các lỗi CS1519 nhưng sau đó tôi bắt đầu nhận được CS0234:

Compiler Error Message: CS0234: The type or namespace name 'Personalization' does not exist in the namespace 'EPiServer' (are you missing an assembly reference?)

Source Error:
Line 116: }
Line 117:
Line 118: public virtual EPiServer.Personalization.SubscriptionInfo SubscriptionInfo {
Line 119: get {
Line 120: return ((EPiServer.Personalization.SubscriptionInfo)(this.GetPropertyValue("SubscriptionInfo")));

Tôi đang sử dụng VisualStudio 2008, Episerver 5.2.372.7, VisualSVN 1.7.2 và một hộp Debian như Subversion repo chạy svn phiên bản 1.4.2 (r22196).

Ứng dụng được xây dựng tốt, sau đó tôi đã kiểm tra nó vào repo. Kiểm tra nó ra đến một vị trí khác nhau trên cùng một máy tính và nhấn F5 và các lỗi này bắt đầu xuất hiện.

Có ai có bất kỳ đề xuất nào không.

CẬP NHẬT: Cảm ơn bạn đã gửi câu trả lời, Zhaph.

tôi đã thêm dòng sau vào web.config của tôi trong phần <compilation>:

<assemblies> 
    <add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
    <add assembly="EPiServer, Version=5.2.375.7, Culture=neutral, PublicKeyToken=8fe83dea738b45b7"/> 
    <add assembly="EPiServer.BaseLibrary, Version=5.2.375.7, Culture=neutral, PublicKeyToken=8fe83dea738b45b7"/> 
    <add assembly="EPiServer.Configuration, Version=5.2.375.7, Culture=neutral, PublicKeyToken=8fe83dea738b45b7"/> 
    <add assembly="EPiServer.Enterprise, Version=5.2.375.7, Culture=neutral, PublicKeyToken=8fe83dea738b45b7"/> 
    <add assembly="EPiServer.Implementation, Version=5.2.375.7, Culture=neutral, PublicKeyToken=8fe83dea738b45b7"/> 
    <add assembly="EPiServer.Lucene, Version=5.2.375.7, Culture=neutral, PublicKeyToken=8fe83dea738b45b7"/> 
    <add assembly="EPiServer.Scheduler, Version=5.2.375.7, Culture=neutral, PublicKeyToken=8fe83dea738b45b7"/> 
    <add assembly="EPiServer.Web.WebControls, Version=5.2.375.7, Culture=neutral, PublicKeyToken=8fe83dea738b45b7"/> 
    <add assembly="EPiServer.WorkflowFoundation, Version=5.2.375.7, Culture=neutral, PublicKeyToken=8fe83dea738b45b7"/> 
    <add assembly="EPiServer.Wsrp, Version=5.2.375.7, Culture=neutral, PublicKeyToken=8fe83dea738b45b7"/> 
    <add assembly="EPiServer.XForms, Version=5.2.375.7, Culture=neutral, PublicKeyToken=8fe83dea738b45b7"/> 
</assemblies> 

Không có phần <assemblies> trước đó.

Dự án có tất cả các tệp DLL đó trong Tham chiếu của nó. Tất cả các EPiServer DLL đều nằm trong GAC. Thanh toán mới (không hoạt động) trên cùng một máy mà dự án gốc đã được tạo.

bây giờ tôi nhận được: Lỗi

Parser Error Message: Could not load file or assembly 'EPiServer.Scheduler' or one of its dependencies. The system cannot find the file specified.

(C:\Projects\web\ProvidentPPC2\ProvidentPPC\web.config line 301)

Nguồn:

Line 299:  <add name="InitializationModule" type="EPiServer.Web.InitializationModule" /> 
Line 300:  <!--<add name="BasicAuthentication" type="EPiServer.Security.BasicAuthentication, EPiServer" />--> 
Line 301:  <add name="Initializer" type="EPiServer.Scheduler.Initializer, EPiServer.Scheduler" /> 
Line 302:  <add name="WorkflowRuntime" type="EPiServer.WorkflowFoundation.WorkflowSystem" /> 
Line 303:  <add name="UrlRewriteModule" type="EPiServer.Web.UrlRewriteModule" /> 

Source File:

C:\Projects\web\ProvidentPPC2\ProvidentPPC\web.config 
Line: 301 

Như tôi đã nói EPiServer.Scheduler là trong GAC của tôi và được thêm vào dự án làm trọng tài nce. Mọi ý tưởng khác sẽ được đánh giá cao.

Trả lời

10

Tôi gặp sự cố này khi tôi đã tái cấu trúc các tham chiếu dll trong dự án.

Tôi đã di chuyển các phần dll ngoài/phần ba từ thư mục bin sang thư mục thư viện bên ngoài gốc dự án web.

Vấn đề của tôi là một số tài liệu tham khảo dll không có bản sao cục bộ được đặt thành true, vì vậy chúng chưa bao giờ được sao chép vào thư mục bin trên bản dựng.

-2

tôi đoán được thông báo lỗi ban đầu có nghĩa là bạn đã có một C# biểu hiện bị thay đổi trong

return ((EPiServer.Personalization.SubscriptionInfo, EPiServer)... 

không có gì để làm với các tập tin cấu hình.

Có thể bạn đã nhập "," thay vì "." ? (Khi trình biên dịch đọc này, bạn cung cấp 2 loại trong dàn diễn viên)

Hoàn nguyên web.config về phiên bản gốc và sửa lỗi đánh máy, thao tác đó sẽ hoạt động.

cập nhật sau khi bình luận của Greg:

Tôi đã không nhận ra phần cấu hình bạn được đăng là một phần của cấu hình EPIServer. Bạn đã đúng sau đó để loại bỏ các tên lắp ráp.

Tuy nhiên tôi đoán bạn cần tham khảo EPiServer từ ứng dụng web (Thêm tham chiếu ...). Tôi nghĩ rằng tôi nhận thấy điều này trong các dự án của tôi quá: Nếu bạn kiểm tra một ứng dụng ASP.Net đến một vị trí mới, bạn cần phải thêm tất cả các tài liệu tham khảo một lần nữa.

+1

Hi devio, Câu lệnh trả về nằm trong tệp .cs được tạo tự động. Tôi sẽ cập nhật câu hỏi của mình để phản ánh điều này –

1

Bạn đã thử tham khảo chính xác cụm EPiServer chưa?

Tôi giả sử rằng nó hiển thị ok trong nút tham chiếu dự án trong Solution Explorer và chưa có lớp phủ phủ màu vàng trên đó?

lẽ bạn có thể tham khảo nó trong phần biên soạn web.config cũng như:

<compilation debug="false"> 
    <assemblies> 
    [...] 
    <add assembly="Episerver, Version=5.2.372.7"/> 
    </assemblies> 
</compilation> 

Bạn có thể hoặc không cần số phiên bản, hoặc bạn có thể cần thêm số phiên bản và kiểu văn hóa - có nên là một vài hội đồng khác được tham chiếu trong đó để tham khảo.

Bạn cũng có thể thử:

<add assembly="EPiServer" /> 

và các biến thể khác.


Âm thanh như một tải hội vấn đề thì:

Kiểm tra xem EPiServer DLL là thể truy cập ở vị trí mới của mình - là nó cài đặt vào máy tính của bạn Global Assembly Cache, hoặc là nó một tham chiếu địa phương để các/bin thư mục? Là dll trong thư mục bin? Là dll bao gồm trong kiểm soát nguồn?

+0

Cung cấp cho tôi "Thông báo lỗi phân tích cú pháp: Không thể tải tệp hoặc lắp ráp 'EPiServer, Phiên bản = 5.2.375.7' hoặc một trong các phụ thuộc của nó. Hệ thống không thể tìm thấy tệp được chỉ định". –

1

Tôi đã gặp phải vài lần và thực hiện nó cho tôi là khi tôi sao chép thủ công các EPiServer vào thư mục bin.Điều đó làm việc chắc chắn nhưng nó không phải là rất thanh lịch. Giải pháp của Zhaph với thẻ hội đồng trông đẹp hơn nhiều, tôi sẽ thử nó lần sau.

2

Đã một thời gian kể từ khi tôi hỏi điều này và tôi tiếp tục suy nghĩ rằng tôi cần phải nhớ vấn đề là gì và đăng câu trả lời. Tôi nghĩ rằng đây là nó.

Hóa ra đã xảy ra sự cố với ứng dụng tìm các tệp DLL mà EPiServer đã cài đặt. Tôi không chắc chắn chính xác và tôi sẽ cập nhật bài đăng này khi tôi có cơ hội thử nó trên một máy sạch, tôi vẫn còn giữa dự án vì vậy nó không phải là một thời điểm rất tốt để được faffing về.

Cách tôi sửa nó là lấy các tệp DLL từ c: \ Program Files \ EPiServer \ CMS \ VERSION \ bin và đặt chúng vào thư mục bin cho ứng dụng.

Khi tôi có cơ hội thực hiện cài đặt sạch ở đâu đó, tôi sẽ xem liệu nó có ảnh hưởng đến dự án (mà tôi nghi ngờ) hay không, hoặc cài đặt trên máy tính bị hỏng.

+1

Vâng tôi chắc chắn giữ các dll trong cấu trúc dự án và tham khảo chúng từ đó thay vì dựa vào GAC. Điều này đặc biệt quan trọng nếu bạn muốn thực hiện Tích hợp liên tục và có tất cả các phụ thuộc được đăng ký với dự án. - Lee –

1

Tôi vừa gặp sự cố tương tự vào chiều nay. Vấn đề là các dll EpiServer không có trong thư mục bin của trang web, vì vậy tôi đã bị lỗi liên kết.

Dự án đã được tạo bởi một trong các đồng nghiệp của tôi và các tệp EpiServer có liên quan đã được thêm làm mục giải pháp trong thư mục lib và được tham chiếu từ đó. Tuy nhiên, như ban đầu anh ta đã tạo nó từ mẫu dự án EpiServer, các thư viện cũng đã tự động được thêm vào thư mục bin. Khi ông cập nhật các tài liệu tham khảo để trỏ đến thư mục lib, sao chép địa phương mặc định là sai. Điều này vẫn làm việc trên máy tính của mình do các bản gốc được đặt trong thư mục bin theo mẫu. Cập nhật chúng lên CopyLocal = True đã khắc phục vấn đề.

1

Tôi vừa gặp sự cố tương tự này, một lần nữa với trang web EPiServer. Đó là vì tôi đã tham khảo các EPiServer DLLs, nhưng chúng không có thuộc tính "copy to local" được đặt thành true trên tất cả các tham chiếu, và vì vậy chúng không phải tất cả được đặt trong thư mục bin.

1

Xóa mọi thứ khỏi Thư mục BIN và sao chép tất cả các tệp từ [ASSEMBLIES] vào thư mục BIN đã khắc phục sự cố cho tôi.

Khizer Jalal

Các vấn đề liên quan