2009-07-02 49 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