7

从 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”文件夹中,并且是构建过程的一部分。这不是我的源代码。

我已经看到了这个问题,这表明网络配置包含类型引用

以“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”中不存在类型或命名空间名称“Personalization”(您是否缺少程序集引用?)

源错误:
第 116 行:}
第 117 行:
第 118 行:公共虚拟 EPiServer.Personalization.SubscriptionInfo SubscriptionInfo {
第 119 行:get {
第 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 存储库。

该应用程序构建良好,然后我将其签入到存储库中。将其检查到同一台计算机上的不同位置并按 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 中。新的(不工作的)结帐在创建原始项目的同一台机器上。

我现在得到:

解析器错误消息:无法加载文件或程序集“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 中并作为参考添加到项目中。任何更多的想法将不胜感激。

4

8 回答 8

10

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

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

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

于 2010-10-11T13:02:14.877 回答
2

自从我问这个问题已经有一段时间了,我一直在想我需要记住问题所在并发布答案。我觉得这就是。

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

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

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

于 2009-08-25T22:06:10.410 回答
1

您是否尝试过正确引用 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是否包含在源代码管理中?

于 2009-07-02T09:10:46.920 回答
1

当我手动将 EPiServer 程序集复制到 bin 文件夹时,我遇到了几次并为我完成了它。这肯定有效,但它不是很优雅。Zhaph 的带有程序集标签的解决方案看起来好多了,我下次试试。

于 2009-08-14T10:20:54.247 回答
1

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

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

于 2009-09-24T15:58:04.237 回答
1

我刚刚遇到了同样的问题,又是一个 EPiServer 站点。这是因为我引用了 EPiServer DLL,但它们没有将所有引用的“复制到本地”属性设置为 true,因此它们并没有全部放在 bin 目录中。

于 2009-09-25T15:02:28.303 回答
1

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

凯泽·贾拉勒

于 2014-01-22T07:58:14.683 回答
-2

我猜原来的错误消息意味着你有一个格式错误的 C# 表达式

return ((EPiServer.Personalization.SubscriptionInfo, EPiServer)...

与配置文件无关。

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

将 web.config 恢复到其原始版本并修复错字,这应该可以工作。

格雷格评论后更新:

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

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

于 2009-07-02T08:58:09.627 回答