2009-07-02 46 views
7

我在檢查Subversion之後編譯EPiServer Web應用程序時遇到問題。結帳後出現「Invalid token','in class,struct或interface'

我得到這個錯誤

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

源錯誤:

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"))); 

源文件:

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

你可以從錯誤中看到,這個文件是在「臨時ASP」中。 NET Files「文件夾並且是構建過程的一部分。這不是我的源代碼。

我見過this question這表明web配置包含類型引用

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

於是我走進我的web.config,並改變了部分

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

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

這消除了上面的直接錯誤,但後來我得到了差異相同的錯誤不同類型。因此,我瀏覽了「Namespace.TypeName,AssemblyName」格式中的所有類型,並刪除了「,AssemblyName」。此停止所有CS1519錯誤,但後來我開始變得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")));

我使用VisualStudio的2008年,Episerver 5.2.372.7,1.7.2的VisualSVN和Debian的盒子作爲顛覆回購運行SVN版本1.4.2( r22196)。

該應用程序構建良好,然後我檢查了它的回購。將它簽出到同一臺計算機上的其他位置,然後按F5並開始出現這些錯誤。

有沒有人有任何建議。

更新: 感謝您的回覆devio,Zhaph。

我已經添加了以下我在<compilation>部分的web.config:

<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> 

以前有沒有<assemblies>部分。

該項目在其引用中包含所有這些DLL。所有EPiServer DLL都在GAC中。 新的(非工作)簽出位於創建原始項目的同一臺機器上。

我現在得到:

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)

源錯誤:

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" /> 

源文件:

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

正如我所說EPiServer.Scheduler是在我的GAC和作爲參考添加到項目中NCE。 任何更多的想法將非常感激。

回答

10

我遇到了這個問題,因爲我重構了項目中的dll引用。

我已經將外部/第三部分dll從bin文件夾移動到web項目根目錄之外的庫文件夾中。

我的問題是,一些dll的引用沒有的本地設置複製到真正的,所以他們從來沒有複製到構建bin文件夾。

-2

我想原來的錯誤消息意味着您在

有一個畸形的C#表達
return ((EPiServer.Personalization.SubscriptionInfo, EPiServer)... 

無關的配置文件。

可能是您輸入「,」而不是「」。 ? (正如編譯器讀到的,你在劇組中提供了2種類型)

將web.config恢復到它的原始版本並修復錯誤,這應該工作。格雷格的評論後

更新:

我不知道你張貼的配置節進行了EPIServer配置的一部分。您是正確的然後刪除程序集名稱。

不過,我想你需要從Web應用程序(添加引用...)引用EPiServer。我想我也在我的項目中注意到了這一點:如果您將ASP.Net應用程序簽出到新位置,則需要再次添加所有引用。

+1

嗨devio,return語句是在一個自動生成的.cs文件中。我將更新我的問題以反映此問題 – 2009-07-02 09:02:48

1

您是否嘗試過正確引用EPiServer程序集?

我假設它在解決方案資源管理器中的項目引用節點中顯示爲ok,並且沒有黃色驚歎覆蓋層?

也許你可以在web.config統計部引用它還有:

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

你可以或者不需要的版本號,或者你可能需要添加版本號與文化類型 - 應該有可以參考其中的幾個其他程序集以供參考。

您也可以嘗試:

<add assembly="EPiServer" /> 

和其他變化。


聽起來像那麼程序集加載問題:

檢查EPiServer DLL是在您的新位置accessable - 是它安裝到您的計算機的全局程序集緩存,或者是一個本地參考/ bin文件夾?該bin文件夾中的DLL? dll是否包含在源代碼管理中?

+0

給我「解析器錯誤消息:無法加載文件或程序集'EPiServer,Version = 5.2.375.7'或其某個依賴項,系統找不到指定的文件。 – 2009-07-02 09:24:49

1

我碰到過好幾次,對我來說就是當我手動將EPiServer程序集複製到bin文件夾時。這是肯定的,但它不是很優雅。帶有組件標籤的Zhaph解決方案看起來好多了,下次我會嘗試。

2

自從我問這個問題已經有一段時間了,我一直在想,我需要記住問題是什麼併發布答案。我覺得這就是。

事實證明,找到EPiServer安裝的DLL的應用程序存在問題。我不確定,一旦我有機會在一臺乾淨的機器上試用它,我會更新這篇文章,但我仍然處於項目中期,所以現在不是一個好時機。

我固定它是從C得到的DLL文件的方式:\ Program Files文件\ EPiServer \ CMS \ VERSION \ bin並把它們在應用程序的bin文件夾。

一旦我得到機會做一個乾淨的安裝的地方,我會看它是否是逸岸項目(我懷疑),或者更可能的是,在我的電腦上安裝哪個壞。

+1

是的,我肯定會將dll保留在項目結構中,並從那裏引用它們,而不是依賴於GAC。 如果要執行持續集成並將所有依賴項與項目一起簽入,這一點尤其重要。 - 李 – 2009-09-11 08:25:13

1

今天下午我剛剛有類似的問題。問題在於EpiServer dll沒有出現在網站的bin目錄中,所以我遇到了綁定失敗。

該項目已被我的同事和相關EpiServer dll的一個創造,加入作爲一個lib文件夾的解決方案的項目,並從那裏引用。但是,由於他最初是通過EpiServer項目模板創建的,因此這些庫也自動添加到了bin文件夾中。當他更新引用以指向lib文件夾時,將本地默認值複製爲false。由於模板將原始副本放置在bin文件夾中,這仍然可以在他的機器上運行。將它們更新到CopyLocal = True解決了問題。

1

我剛剛有同樣的問題,再次與EPiServer網站。這是因爲我引用了EPiServer DLL,但它們沒有在所有引用上將「copy to local」屬性設置爲true,因此它們並不全部放在bin目錄中。

1

從BIN文件夾中刪除所有文件,並將[ASSEMBLIES]中的所有文件複製到BIN文件夾中,爲我解決了這個問題。

Khizer Jalal