2009-07-02 6 views
7

Je rencontre des problèmes lors de la compilation d'une application Web EPiServer après l'avoir extraite de Subversion."Jeton non valide", "dans la classe, la structure ou l'interface" après la commande

Je reçois cette erreur

Compiler Error Message: CS1519: Invalid token ',' in class, struct, or interface member declaration

Erreur Source:

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"))); 

Source fichier:

c:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\956e6fc5\66c11597\App_Code.9_fan95p.0.cs Line: 118 

Comme vous pouvez le voir sur l'erreur, ce fichier est dans le "ASP temporaire. NET Files "et fait partie du processus de construction. Ce n'est pas mon code source.

J'ai vu this question ce qui suggère que la configuration Web contient des références de type

specified in the "Namespace.ClassName, AssemblyName" format.

Je suis entré dans mon web.config et ils ont changé la section

... 
<profile ...> 
    <properties> 
     ... 
     <add name="SubscriptionInfo" 
      type="EPiServer.Personalization.SubscriptionInfo, EPiServer" 
      provider="SqlProfile" /> 
     ... 

à

... 
<profile ...> 
    <properties> 
     ... 
     <add name="SubscriptionInfo" 
      type="EPiServer.Personalization.SubscriptionInfo" 
      provider="SqlProfile" /> 
     ... 

Cela a supprimé l'erreur immédiate ci-dessus, mais j'ai eu la même erreur pour un diff type erent. Donc je suis allé à travers tous les types qui étaient dans "Namespace.TypeName, AssemblyName" format et enlevé le ", AssemblyName". Cela arrêté toutes les erreurs de CS1519, mais je commence à me 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")));

J'utilise VisualStudio 2008, Episerver 5.2.372.7, VisualSVN 1.7.2 et une boîte Debian comme la version repo Subversion en cours d'exécution svn 1.4.2 (r22196).

L'application construite très bien, puis je l'ai vérifié dans le repo. Vérifié à un emplacement différent sur le même ordinateur et appuyez sur F5 et ces erreurs commencent à apparaître.

Quelqu'un a-t-il des suggestions?

MISE À JOUR: Merci pour vos réponses devio, Zhaph.

J'ai ajouté ce qui suit à mon web.config dans la section <compilation>:

<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> 

Il n'y avait pas <assemblies> section précédemment.

Le projet contient toutes ces DLL dans ses références. Toutes les DLL EPiServer sont dans le GAC. La nouvelle extraction (non fonctionnelle) est sur la même machine que le projet d'origine a été créé.

Je reçois maintenant:

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)

Erreur Source:

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" /> 

Fichier source:

C:\Projects\web\ProvidentPPC2\ProvidentPPC\web.config 
Line: 301 

Comme je le dis EPiServer.Scheduler est dans mon GAC et ajouté au projet en tant que refere nce. D'autres idées seraient grandement appréciées.

Répondre

10

J'ai rencontré ce problème car je restructurais les références dll dans un projet.

J'ai déplacé les dlls externes/tiers du dossier bin vers un dossier de bibliothèque en dehors de la racine du projet Web. Mon problème était que certaines des références dll n'avaient pas de copie locale définie sur true, donc elles n'ont jamais été copiées dans le dossier bin lors de la construction.

-2

Je suppose que le message d'erreur d'origine que vous vouliez dire eu une expression malformé C# dans

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

rien à voir avec le fichier de configuration. Vous avez probablement tapé "," au lieu de "." ? (Comme le compilateur lit ceci, vous fournissez 2 types dans la distribution)

Retournez web.config à sa version d'origine et corrigez la faute de frappe qui devrait fonctionner.

mise à jour après le commentaire de Greg:

Je ne savais pas la section de configuration que vous avez affichée faisaient partie de la configuration Episerver. Vous aviez raison de supprimer les noms d'assemblage.

Cependant, je suppose que vous devez référencer l'EPiServer depuis l'application web (Ajouter une référence ...). Je pense que j'ai aussi remarqué cela dans mes projets: Si vous passez une application ASP.Net à un nouvel emplacement, vous devez ajouter à nouveau toutes les références.

+1

Hi devio, L'instruction return est dans un fichier .cs généré automatiquement. Je vais mettre à jour ma question pour refléter cela –

1

Avez-vous essayé de référencer l'ensemble EPiServer correctement?

Je suppose qu'il affiche ok dans le nœud des références de projet dans l'Explorateur de solutions, et qu'il n'y a pas de surimpression jaune dessus?

Peut-être que vous pourriez faire référence dans la section de compilation web.config ainsi:

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

Vous pouvez soit pas besoin du numéro de version, ou vous devrez peut-être ajouter le numéro de version et le type de culture - il devrait être quelques autres assemblées référencées là déjà pour référence.

Vous pouvez également essayer:

<add assembly="EPiServer" /> 

et d'autres variations.


Sonne comme un problème de charge de l'Assemblée puis:

Vérifiez que le EPiServer DLL est accessible dans votre nouvel emplacement - est-il installé sur votre ordinateur Global Assembly Cache, ou est-il une référence locale à la/dossier bin? La DLL est-elle dans le dossier bin? La DLL est-elle incluse dans le contrôle de la source?

+0

Me donne "Message d'erreur de l'analyseur: Impossible de charger le fichier ou l'assemblage 'EPiServer, Version = 5.2.375.7' ou l'une de ses dépendances Le système ne trouve pas le fichier spécifié." –

1

J'ai couru dans ceci plusieurs fois et fait pour moi est quand j'ai manuellement copié les assemblées d'EPiServer dans le dossier de poubelle.Cela fonctionne à coup sûr, mais ce n'est pas très élégant. La solution de Zhaph avec l'étiquette des assemblages semble beaucoup plus belle, je vais essayer la prochaine fois.

2

Cela fait un moment que je l'ai demandé et je continue de penser en pensant que je dois me rappeler quel était le problème et poster la réponse. Je pense que c'est ça.

Il s'est avéré qu'il y avait un problème avec l'application à trouver les DLL installées par EPiServer. Je ne sais pas exactement et je mettrai à jour ce post une fois que j'aurai l'occasion de l'essayer sur une machine propre, je suis encore à mi-projet donc ce n'est pas un très bon moment pour faire des commentaires.

La façon dont je l'ai résolu était d'obtenir les DLL de c: \ Program Files \ EPiServer \ CMS \ VERSION \ bin et les mettre dans le dossier bin de l'application. Une fois que j'aurai l'occasion de faire une installation propre quelque part je verrai si c'est le projet infact (dont je doute) ou, plus probablement, l'installation sur mon ordinateur qui est cassée.

+1

Oui, je garderais certainement les dll dans la structure du projet et les référence à partir de là plutôt que de compter sur le GAC. Ceci est particulièrement important si vous souhaitez effectuer une intégration continue et que toutes les dépendances sont enregistrées dans le projet. - Lee –

1

J'ai juste eu un problème similaire cet après-midi. Le problème était que les dlls EpiServer n'étaient pas présentes dans le répertoire bin du site, donc j'ai eu des échecs de liaison.

Le projet a été créé par l'un de mes collègues et les DLL EpiServer correspondantes ont été ajoutées en tant qu'éléments de solution dans un dossier lib et référencées à partir de là. Cependant, comme il l'avait initialement créé à partir du modèle de projet EpiServer, les bibliothèques avaient été automatiquement ajoutées au dossier bin. Lorsqu'il a mis à jour les références à pointer vers le dossier lib, copiez local par défaut à false. Cela fonctionnait toujours sur sa machine en raison des copies originales placées dans le dossier bin par le modèle. Les mettre à jour dans CopyLocal = True a résolu le problème.

1

Je viens d'avoir ce même problème, encore une fois avec un site EPiServer. C'était parce que je référençais les DLL EPiServer, mais ils n'avaient pas la propriété "copy to local" définie sur true sur toutes les références, et donc ils n'étaient pas tous placés dans le répertoire bin.

1

Supprimer tout de dossier BIN et copier tous les fichiers de [ASSEMBLÉES] dans dossier BIN a résolu le problème pour moi.

Khizer Jalal

Questions connexes