2010-12-13 64 views
0

Il existe un UserControlA qui était déjà développé lorsque j'ai rejoint un projet. C'est dans un projet que j'appellerai MyProjectWeb et son espace de noms est MyProjectWeb.Common.Le contrôle de l'utilisateur n'est pas accessible par un autre fichier CS

namespace MyProjectWeb.Common 
{ 
    public partial class UserControlA : System.Web.UI.UserControl 
    { 

... 

Un autre projet WorkFlowManager contient un fichier de classe qui accède à ce UserControl1.

MyProjectWeb.Common.UserControlA myUserControlA = (MyProjectWeb.Common.UserControlA)WizardControl.FindControl("TabContainer5$tpSomething$UserControlID"); 

Note: WorkFlowManager et MyProjectWeb sont dans la même solution.

Cela fonctionne complètement bien. Et maintenant je veux créer un autre UserControl qui est UserControlB.

J'ai suivi exactement la même chose.

namespace MyProjectWeb.Common 
{ 
    public partial class UserControlB : System.Web.UI.UserControl 
    { 

Mais à ma grande surprise, je ne peux pas créer une instance de UserControlB dans le même fichier de code dans WorkFlowManager. L'espace de noms MyProjectWeb.Common ne contient même pas de UserControlB. Quand je compile je reçois obtenir évidemment un
The type or namespace name 'UserControlB' does not exist in the namespace 'MyProjectWeb.Common' (are you missing an assembly reference?)

Pourquoi est-ce que je peux faire référence à UserControlA mais pas UserControlB qui sont dans le même espace de noms à partir du fichier WorkFlowManager cs? Si j'accède à l'espace de noms MyProjectWeb.Common n'importe où dans MyProjectWeb, je peux voir les deux contrôles utilisateur. Partout pour rechercher des erreurs?

J'utilise Visual Studio 2005 avec

ASP .NET 2.0

Répondre

1

Cela dépend de la façon dont projet WorkFlowManager référence MyProjectWeb dll. Si les deux projets sont dans la même solution, cela devrait être une référence de projet, mais vous devez le vérifier. Si la référence est faite au fichier DLL alors vous devez voir où exactement le fichier référencé est stocké - je suppose que WorkFlowManager projet fait référence à une copie privée de MyProjectWeb dll qui évidemment ne pas être mis à jour lorsque vous reconstruisez MyProjectWeb.

+0

WorkFlowManager fait référence à un ancien fichier DLL comme vous l'avez dit. :) Mais mon problème est que les projets Web ne créent pas de fichiers DLL? Si oui, où puis-je trouver le dernier fichier dll mis à jour? –

+0

@Ranhiru, le projet d'application Web va créer des fichiers dll - ils seront situés dans le répertoire bin sous votre répertoire racine du projet web. – VinayC

+0

Merci beaucoup :) Le fichier 'WorkFlowManager.csproj' contenait une référence à un mauvais fichier dll. En supprimant la référence de VS 2005 et en rajoutant la DLL correcte juste gardée toujours gardé se référant à la même DLL! J'ai dû éditer manuellement le fichier csproj. Thanx heaps! –

1

je dois regarder le projet pour en être sûr, ce que vous dites ci-dessus me dit pas assez.

idées rapides:

  • Assurez-vous que UserControlB.cs est en fait dans le bon projet.
  • Assurez-vous que UserControlB.cs est marqué comme "Compile" pour le type de construction.
  • Assurez-vous que UserControlB est en fait "B" et non "A" car, étant donné qu'ils sont partiels, une erreur d'orthographe pourrait les amener à se combiner.
  • Ces contrôles utilisateur sont "partiels" avez-vous également copié l'autre partie?
  • Assurez-vous que le projet Web n'a pas d'erreurs, il est possible que le projet n'est pas construit correctement et l'erreur que vous obtenez est due à un assemblage périmé.
  • Nettoyer + Reconstruire. Supprimez les répertoires bin et obj manuellement.