Pourquoi ne ASP.NET site web de référence de l'assemblée à partir de GAC a, lors de l'ajout de locaux de référence?
Lorsque vous utilisez ASP.NET site web (au lieu de l'application web modèle) et d'ajouter une référence à un assembly à partir du dossier local, Visual Studio, paraît-il, bien conscient que cette assemblée locale est également dans le GAC et n'a donc PAS de copie de la présente assemblée pour dossier bin (comme il le fait avec les non-GAC-ensembles), mais ajoute simplement un nouveau record dans le web.fichier de configuration.
Pourquoi un tel comportement? Est-il possible de forcer la copie de dossier bin (j'ai besoin de ce depuis la .dll n'est pas sur la cible de l'environnement)? Je peux ajouter assemblée bin du dossier que le fichier et il va travailler, mais dans ce cas, bin contenu dans la source de contrôle, ce qui n'est pas bon.
OriginalL'auteur Konstantin | 2010-01-07
Vous devez vous connecter pour publier un commentaire.
Vous pouvez définir la propriété Copie Locale de Vrai sur la référence. Qui devrait l'ajouter dans le dossier bin - sur un projet d'Application Web.
Mais pour un projet de Site Web, lorsque vous ajoutez une référence, il ne fait qu'ajouter une ligne sur le web.config qui fait référence à l'assemblée. Il va chercher ce fichier dans le dossier bin, puis dans le cas si il n'est pas trouvé.
Vous avez deux options: exiger de l'assemblée pour être installé dans le GAC sur la machine cible (dans ce cas, le déploiement de XCOPY n'est pas possible) ou inclure toutes les assemblées dans le dossier bin, soit en les copiant ou l'écriture d'un post-script de construction qui ne. Vous pouvez trouver l' .dll à l'aide de l'invite de commande et d'aller à c:\windows\assembly\GAC, trouver l'assemblée qui vous intéresse, cd dans ce répertoire et de cd dans le répertoire avec la version qui vous intéresse. Cela vous donnera le chemin à utiliser dans votre post-script de construction. Par exemple, pour l'Accessibilité assembly dans le GAC, vous finirais avec ce chemin:
c:\Windows\assembly\GAC\Accessibility\1.0.5000.0__b03f5f7f11d50a3a\Accessibility.dll
Vous dire y compris le dossier bin contenu dans la source de contrôle n'est pas bon. Cela est généralement considéré comme vrai pour les fichiers binaires, vous construisez, mais dans votre cas, vous avez binaires actifs qui ne sont pas compilés dans le cadre de votre projet. Philosophiquement, ce sont les équivalents des images: binaire biens qui ne sont pas compilés dans le cadre de votre projet. Je dirais qu'ils appartiennent à la source de contrôle, comme pour tout autre binaire de votre projet repose sur. Mais c'est un choix personnel.
C'est une propriété de la référence, et non le site web. Mais je vois maintenant pourquoi vous spécifier qu'il s'agit d'un site web et non pas d'une application web. Je vais modifier ma réponse.
J'ai marqué que cette réponse est acceptée, merci de Ne! Cependant, je ne comprends toujours pas la logique de VS - si-je ajouter de l'assemblée locale - pourquoi le rechercher dans le GAC et ensuite de référence à partir du GAC?
La référence dans le web.config ne pas spécifier l'emplacement; au moment de l'exécution, l'assemblée sera examiné pour la première dans le dossier bin, puis dans le cas si il ne l'est pas localement. Il ne faut pas rechercher le GAC si vous l'avez dans le dossier bin. Lors de l'ajout de la référence en la VS, l' .NET onglet montre seulement ce qui est dans le GAC. Vous devez utiliser l'onglet Parcourir pour trouver votre local de référence.
OriginalL'auteur Don
Si vous utilisez un projet de site web dans Visual Studio et une référence conserve en l'orientant vers le GAC version à la place d'un autre dossier (par exemple lib), vous devrez créer un
xxxx.dll.refresh
fichier dans votre dossier /bin, où xxxx est la dll incriminée vous faites référence.Cela permettra de résoudre les problèmes de compilation avec MSBuild trop où le serveur va attendre la dll dans le GAC. L' .l'actualisation des fichiers obtiendrez le fichier à partir du bon chemin relatif ne génère correctement.
OriginalL'auteur LordHits
Au moment de l'exécution, les assemblages doivent être dans l'un des deux emplacements: le chemin de sortie du projet ou le global assembly cache (voir Travail avec les Assemblées et le Global Assembly Cache). Si le projet contient une référence à un objet qui n'est pas dans un de ces endroits, puis, quand le projet est construit, la référence doit être copié dans le chemin de sortie du projet. CopyLocal propriété indique si cette copie doit être faite. Si la valeur est true, la référence est copiée. Si la valeur est false, la référence n'est pas copié.
Le projet attribué la valeur de CopyLocal est déterminé dans l'ordre suivant:
Sinon, la valeur est true.
Espère que cette aide
s
OriginalL'auteur OrgChart JS support
Pour plus d'informations sur la façon de définir la Propriété Copie Locale de Référence pour un projet web (pas d'une application web), voir:
http://msdn.microsoft.com/en-us/library/t1zz5y8c(v=VS.100).aspx
OriginalL'auteur Chris Halcrow