结帐后“无效的令牌”,“在类,结构或接口中”

时间:2009-07-02 08:31:10

标签: asp.net svn episerver

在从Subversion中检出EPiServer Web应用程序后,我遇到了问题。

我收到此错误

  

编译器错误消息:CS1519:类,结构或接口成员声明中的标记','无效

来源错误:

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 

从错误中可以看出,此文件位于“Temporary ASP.NET Files”文件夹中,是构建过程的一部分。这不是我的源代码。

我看到this question表示网络配置包含类型引用

  在“Namespace.ClassName中指定,   AssemblyName“格式。

所以我进入了我的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:

  

编译器错误消息:CS0234:   类型或命名空间名称   '个性化'不存在于   命名空间'EPiServer'(是你吗?   缺少装配参考?)

     

来源错误:
  第116行:}   第117行:
  第118行:公共虚拟EPiServer.Personalization.SubscriptionInfo   SubscriptionInfo {
  第119行:得到{
  120行:返回   ((EPiServer.Personalization.SubscriptionInfo)(this.GetPropertyValue( “的SubscriptionInfo”)));

我使用VisualStudio 2008,Episerver 5.2.372.7,VisualSVN 1.7.2和Debian框作为运行svn版本1.4.2(r22196)的Subversion repo。

应用程序构建正常,然后我检查了回购。将其签出到同一台计算机上的其他位置,然后点击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>部分。

该项目在其References中包含所有这些DLL。所有EPiServer DLL都在GAC中。 新的(非工作)结账与创建原始项目的机器在同一台机器上。

我现在得到:

  

分析程序错误消息:无法加载   文件或程序集'EPiServer.Scheduler'   或其中一个依赖项。系统   找不到指定的文件。

     

(C:\ Projects \ web \ ProvidentPPC2 \ ProvidentPPC \ web.config第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中,并作为参考添加到项目中。 任何更多的想法都会受到高度赞赏。

8 个答案:

答案 0 :(得分:10)

我在重组项目中的dll引用时遇到了这个问题。

我已将bin /文件夹中的外部/第三部分dll移动到Web项目根目录之外的库文件夹中。

我的问题是某些dll引用没有将copy local设置为true,因此它们从未被复制到构建时的bin文件夹。

答案 1 :(得分:2)

自从我问这个问题已经有一段时间了,我一直在想我需要记住问题是什么并发布答案。我想是这样的。

原来,应用程序发现EPiServer安装的DLL存在问题。我不确定,一旦我有机会在一台干净的机器上试一试,我会更新这篇文章,我还是在项目中期,所以现在不是一个非常好的时间。

我修复它的方法是从c:\ Program Files \ EPiServer \ CMS \ VERSION \ bin获取DLL并将它们放在应用程序的bin文件夹中。

一旦我有机会在某个地方进行干净安装,我会看到它是否是项目(我怀疑),或者更有可能的是,我的计算机上的安装是否已损坏。

答案 2 :(得分:1)

您是否尝试过正确引用EPiServer程序集?

我假设它在解决方案资源管理器中的项目引用节点中显示正常,并且没有上面的黄色惊叹覆盖?

也许您可以在web.config编译部分中引用它:

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

您可能不需要版本号,或者您可能需要添加版本号和文化类型 - 那里应该引用一些其他程序集供参考。

您也可以尝试:

<add assembly="EPiServer" />

和其他变化。


听起来像是装配加载问题:

检查EPiServer DLL是否可以在新位置访问 - 它是否已安装到您的计算机全局程序集缓存中,或者它是/ bin文件夹的本地引用? bin文件夹中的dll是什么? dll是否包含在源代码管理中?

答案 3 :(得分:1)

我遇到过这几次并且为我完成的是当我手动将EPiServer程序集复制到bin文件夹时。这确实有效,但不是很优雅。使用程序集标签的Zhaph解决方案看起来更好,我下次会尝试。

答案 4 :(得分:1)

我今天下午遇到了类似的问题。问题是EpiServer dll不存在于网站的bin目录中,所以我遇到了绑定失败。

该项目由我的一位同事创建,相关的EpiServer dll作为解决方案项添加到lib文件夹中并从那里引用。但是,由于他最初是从EpiServer项目模板创建的,因此库也已自动添加到bin文件夹中。当他更新引用指向lib文件夹时,将本地默认值复制为false。由于模板将原始副本放在bin文件夹中,因此这仍然适用于他的机器。将它们更新为CopyLocal = True可以解决问题。

答案 5 :(得分:1)

我刚刚遇到同样的问题,再次使用EPiServer网站。这是因为我引用了EPiServer DLL,但是他们没有在所有引用上将“copy to local”属性设置为true,因此它们并不是全部放在bin目录中。

答案 6 :(得分:1)

删除BIN文件夹中的所有内容并将[ASSEMBLIES]中的所有文件复制到BIN文件夹中为我解决了问题。

Khizer Jalal

答案 7 :(得分:-2)

我想原始的错误消息意味着你在

中有一个格式错误的C#表达式
return ((EPiServer.Personalization.SubscriptionInfo, EPiServer)...

与配置文件无关。

可能你输入的是“,”而不是“。” ? (当编译器读取此内容时,您在转换中提供了两种类型)

将web.config恢复为原始版本并修复错误,这应该有效。

格雷格的评论之后

更新:

我没有意识到您发布的配置部分是EPIServer配置的一部分。你当时就删除了程序集名称。

但是我想你需要从网络应用程序引用EPiServer(添加引用...)。我想在我的项目中也注意到了这一点:如果你将ASP.Net应用程序签出到新位置,则需要再次添加所有引用。