J'ai créé un site Web dans ASP.NET et j'ai créé une classe et l'ai placée à l'intérieur du dossier App_Code. Cependant, je ne peux pas y accéder à partir de mes autres pages. Faut-il configurer quelque chose pour permettre cela? Je l'ai fait fonctionner dans les projets précédents, mais pas dans celui-ci, en quelque sorte.
namespace CLIck10.App_Code
{
public static class Glob
{
...
}
}
Réponses:
Faites un clic droit sur le
.cs
fichier dans leApp_Code
dossier et vérifiez ses propriétés.Assurez-vous que "Build Action" est réglé sur "Compile".
la source
Mettez ceci en haut des autres fichiers où vous souhaitez accéder à la classe:
OU accédez à la classe à partir d'autres fichiers comme celui-ci:
Je ne sais pas si c'est votre problème ou non, mais si vous étiez nouveau dans C #, c'est un problème facile à résoudre.
Mise à jour: J'ai récemment découvert que si j'ajoute un dossier App_Code à un projet, je dois fermer / rouvrir Visual Studio pour qu'il reconnaisse correctement ce dossier "spécial".
la source
Accédez à la page à partir de laquelle vous souhaitez accéder à la classe App_code, puis ajoutez l'espace de noms de la classe app_code. Vous devez fournir une
using
déclaration, comme suit:Après cela, vous devrez accéder à la propriété de la classe app_code et définir «Build Action» sur «Compile».
la source
assurez-vous que vous utilisez le même espace de noms que vos pages
la source
Je n'ai pas encore compris pourquoi cela se produit, mais j'avais des classes qui se trouvaient dans mon
App_Code
dossier qui appelaient des méthodes les unes dans les autres, et je le faisais bien quand j'ai construit un projet .NET 4.5.2, mais j'ai dû revenir à 4.0 car le serveur cible n'était pas mis à niveau. C'est à ce moment que j'ai trouvé ce problème (après avoir corrigé lelangversion
dans mon web.config de 6 à 5 ... une autre histoire) ....Une de mes méthodes a continué d'avoir une erreur comme:
Toutes mes classes étaient déjà définies sur "Compiler" dans leurs propriétés, comme suggéré dans la réponse acceptée ici, et chacune avait un espace de noms commun qui était le même, et chacune avait
using MyNamespace;
en haut de chaque classe.J'ai constaté que si je déplaçais simplement les classes incriminées qui devaient appeler des méthodes les unes dans les autres vers un autre dossier standard nommé autre que "App_Code", elles cessaient d'avoir ce problème de conflit.
Remarque : Si vous créez un dossier standard appelé "AppCode", y déplacez vos classes, supprimez le dossier "App_Code", puis renommez "AppCode" en "App_Code", vos problèmes reviendront. Peu importe si vous utilisez l'option "Nouveau dossier" ou "Ajouter un dossier ASP .NET" pour créer "App_Code" - il semble saisir le nom.
Peut-être que ce n'est qu'un problème .NET 4.0 (et peut-être plus tôt) ... J'étais très bien en 4.5.2 avant de devoir revenir!
la source
J'ai trouvé plus facile de déplacer les fichiers dans un projet de bibliothèque de classes distinct, puis de référencer ce projet dans le projet Web et d'appliquer l'espace de noms dans la
using
section du fichier. Pour une raison quelconque, les autres solutions ne fonctionnaient pas pour moi, mais ce travail a fonctionné.la source
Dans mon cas, je n'ai pas pu obtenir un projet à construire avec des classes définies dans le dossier App_Code.
Impossible de reproduire le scénario précisément pour commenter, mais a dû fermer et rouvrir Visual Studio pour qu'Intellisense coopère, d'accord ...
J'ai remarqué que lorsqu'une classe du dossier App_Code est définie sur «Compiler» au lieu de «Contenu» (cliquez dessus avec le bouton droit) que les erreurs provenaient d'une deuxième version de la classe ... Regardez à l'extrême gauche de la 3 des 3 champs entre le volet de code et l'onglet. «L'autre» s'appelait quelque chose comme 10_App_Code ou similaire.
Pour corriger le problème, j'ai renommé le dossier App_Code en Code, défini explicitement les espaces de noms sur les classes et défini toutes les classes sur «Compiler»
la source