Asp.net &引用;无效令牌'';在类、结构或接口中“;结帐后

Asp.net &引用;无效令牌'';在类、结构或接口中“;结帐后,asp.net,svn,episerver,Asp.net,Svn,Episerver,在从Subversion中检出EPiServer Web应用程序后,我在编译该应用程序时遇到问题 我得到这个错误 编译器错误消息:CS1519:类、结构或接口成员声明中的“”标记无效 源错误: Line 116: } Line 117: Line 118: public virtual EPiServer.Personalization.SubscriptionInfo, EPiServerSubscription Info { Line 119: get {

在从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 
C:\Projects\web\ProvidentPPC2\ProvidentPPC\web.config
Line: 301
源文件:

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 
C:\Projects\web\ProvidentPPC2\ProvidentPPC\web.config
Line: 301
从错误中可以看出,此文件位于“临时ASP.NET文件”文件夹中,并且是生成过程的一部分。这不是我的源代码

我已经看到,这表明web配置包含类型引用

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

因此,我进入我的web.config并更改了该部分

...
<profile ...>
    <properties>
        ...
        <add name="SubscriptionInfo"
             type="EPiServer.Personalization.SubscriptionInfo, EPiServer"
             provider="SqlProfile" />
        ...
正如我所说,EPiServer.Scheduler在我的GAC中,作为参考添加到项目中。
如果您还有其他想法,我们将不胜感激。

我猜最初的错误消息意味着您的计算机中有一个格式错误的C#表达式

return ((EPiServer.Personalization.SubscriptionInfo, EPiServer)...
与配置文件无关

你可能是打了“,”而不是“?”?(当编译器读取此命令时,您在强制转换中提供了2种类型)

将web.config还原为其原始版本并修复打字错误,这样应该可以正常工作

在Greg的评论后更新:

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


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

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

我假设它在解决方案资源管理器的“项目引用”节点中显示“确定”,并且没有黄色感叹号覆盖

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

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

[...]
您可能不需要版本号,也可能需要添加版本号和区域性类型-其中应该已经引用了一些其他程序集以供参考

您也可以尝试:

<add assembly="EPiServer" />

和其他变体


听起来像是程序集加载问题:


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

我多次遇到此问题,并在手动将EPiServer程序集复制到bin文件夹时为我完成了此操作。这当然管用,但不是很优雅。Zhaph的带有Assemblys标签的解决方案看起来更好,我下次会试试。

我问这个问题已经有一段时间了,我一直在寻找,我想我需要记住问题是什么,然后发布答案。我想就是这样

事实证明,应用程序查找EPiServer安装的DLL时存在问题。我不太确定,一旦我有机会在一台干净的机器上试用,我会更新这篇文章,因为我还处于项目中期,所以现在不是一个吹毛求疵的好时机

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


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

今天下午我刚刚遇到了类似的问题。问题是,episerverdll不在网站的bin目录中,因此绑定失败


该项目是由我的一位同事创建的,相关的episerverdll作为解决方案项添加到lib文件夹中,并从中引用。然而,由于他最初是从EpiServer项目模板创建的,所以库也自动添加到bin文件夹中。当他更新引用以指向lib文件夹时,copy local default为false。由于模板将原始副本放在bin文件夹中,因此这在他的机器上仍然有效。将它们更新为CopyLocal=True解决了这个问题。

我也遇到了同样的问题,同样是在一个EPiServer站点上。这是因为我引用的是EPiServer dll,但它们没有在所有引用上将“copy to local”属性设置为true,因此它们没有全部放在bin目录中。

我在项目中重新构造dll引用时遇到了这个问题

我已将外部/第三部分DLL从bin文件夹移动到web项目根目录外的库文件夹


我的问题是,某些dll引用没有将“复制本地”设置为true,因此在生成时从未将它们复制到bin文件夹。

删除bin文件夹中的所有内容,并将[ASSEMBLIES]中的所有文件复制到bin文件夹中修复了我的问题


Khizer Jalal

您好,return语句位于自动生成的.cs文件中。我将更新我的问题以反映这一点,并给出“解析器错误消息:无法加载文件或程序集'EPiServer,Version=5.2.375.7'或其依赖项之一。系统找不到指定的文件。”是的,我肯定会将DLL保留在项目结构中,并从那里引用它们,而不是依赖GAC。如果您想进行持续集成并将所有依赖项与项目一起签入,这一点尤其重要。-李