2010-04-05 4 views
1

J'ai un projet de bibliothèque de classes qui contient des fichiers de contenu configurés avec l'action de copie "Copier si plus récent". Cela entraîne la copie des fichiers dans un dossier sous ...\bin\ pour chaque projet de la solution. Dans cette même solution, j'ai un projet web ASP.NET (qui est en fait MVC). Dans la bibliothèque, j'ai un constructeur statique charge les fichiers dans des structures de données accessibles par le projet web. Auparavant, j'avais inclus le contenu en tant que ressource intégrée. Je dois maintenant pouvoir les remplacer sans recompilation. Je veux accéder aux données dans trois contextes différents:ASP.NET - Accès au contenu copié

  1. Unité essai l'ensemble de la bibliothèque
  2. Débogage l'application Web
  3. Hébergement du site dans IIS

Pour les tests unitaires, Environment.CurrentDirectory points un chemin contenant le contenu copié. Cependant, lors du débogage, il indique C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE. J'ai également regardé Assembly.GetExecutingAssembly().Location qui pointe vers C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\c44f9da4\9238ccc\assembly\dl3\eb4c23b4\9bd39460_f7d4ca01\. Ce dont j'ai besoin, c'est l'emplacement physique du dossier webroot \bin, mais depuis que je suis dans un constructeur statique dans le projet de bibliothèque, je n'ai pas accès à un Request.PhysicalApplicationPath.

Existe-t-il une autre variable ou structure d'environnement dans laquelle je peux toujours trouver mes fichiers "Copier si plus récent"?

Répondre

1

Assembly.Location indique en effet l'emplacement de l'assemblage après qu'il a été copié.

Cependant, que les états de page MSDN:

Pour obtenir l'emplacement avant que le fichier a été copié ombre, utilisez le CodeBase property.

+0

Génial, cela semble faire l'affaire. –

Questions connexes