在从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中,并作为参考添加到项目中。 任何更多的想法都会受到高度赞赏。
答案 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应用程序签出到新位置,则需要再次添加所有引用。