Le partage de Rasoir vues à travers les projets
Je veux partager la mise en page (en-Tête, la Navigation et le Pied de page de Rasoir points de vue) à travers de multiples ASP.NET les projets MVC. Comment puis-je le faire?
Puis-je créer un personnalisé NuGet paquet pour envelopper la commune de Rasoir, des fichiers, des images et CSS?
OriginalL'auteur VJAI | 2013-12-17
Vous devez vous connecter pour publier un commentaire.
Trois approches:
Voir Compiler votre ASP.NET MVC, Razor points de vue dans une DLL la façon dont vous vous faites l'option 2.
Pour l'option 3, voir La création et la Publication d'un Package.
En fait, je pense que c'est l'article original sur comment compiler Rasoir vues: Précompiler votre MVC, Razor points de vue à l'aide de RazorGenerator
Avec référence à la deuxième de l'article ci-dessus, oui, c'est sur NuGet, actuellement appelée RazorGenerator.Mvc.
Vous m'avez mal compris. Ce que je voulais dire, la création de mon propre package nuget qui emballe tout le rasoir fichiers, css, images. Quelle que soit la MVC projet j'ai besoin de la mise en commun, je vais installer ce custom package nuget.
Je ne voudrais pas utiliser un package Nuget, sauf si vous êtes le partage entre les projets dans différentes solutions. Si vos projets sont tous dans la même solution, il suffit d'ajouter une simple référence. Aussi, le CSS, images, etc. serait mieux placée sur un domaine statique que chaque projet pourrait-il suffit de tirer à partir de, si ils sont vraiment partagé et non personnalisées à tous par projet.
Une autre façon de le faire serait par VS les Événements de construction (du projet -> propriétés -> Build Événements) - ajouter un script pour copier simplement le point de Vue de la source de fichier à votre projet MVC(s) Afficher le répertoire.
OriginalL'auteur Paul Taylor
J'ai frappé plus d'une fois par l'intermédiaire de Google maintenant, et bien que j'avais poser une autre solution (qui, OMI, est beaucoup plus sûr et plus pratique que d'utiliser precompilers et paquets).
En fait, j'ai sans vergogne gratté verbatim une réponse de Erik Phillips, de sorte s'il vous plaît, de crédit pour lui.
Voici ce que je recommande:
À droite, cliquez sur la solution et de créer un Nouvelle Solution de Dossier appelé
Common Javascript Files
(ou que vous vous sentiez comme en l'appelant.Clic droit sur la Solution, cliquez sur Ouvrir le Dossier dans l'Explorateur Windows,
ou y naviguer manuellement pour les autres versions de Visual Studio 🙁
Dans la solution répertoire, créez un répertoire avec le même nom que le dossier de la solution (solution de dossiers ne sont pas normalement les sous-répertoires au niveau du code source, mais ce sera pour la santé mentale du saké).
Dans ce nouveau répertoire, ajouter des fichiers, qui doivent être partagées entre les solutions.
Dans Visual Studio, cliquez sur le dossier de la solution et sélectionnez Ajouter - Élément Existant.
Dans le dialogue de sélection de fichier, naviguez jusqu'au répertoire précédent créé, sélectionnez le ou les fichier(s) ajouté le répertoire et cliquez sur Ajouter.
Dans chaque Projet qui a besoin d'un fichier partagé, cliquez-droit sur le projet (ou d'un répertoire dans le projet) et cliquez sur Ajouter - Élément Existant.
Naviguer vers le Répertoire partagé, Sélectionnez les fichiers et cliquez sur la flèche déroulante puis cliquez sur Ajouter en tant Que Lien.
Maintenant les fichiers du projets sont essentiellement des raccourcis vers les fichiers dans le Dossier de la Solution. Mais ils sont traités comme des fichiers réels dans le projet (ce qui inclut .CS ou Visual Basic fichiers, ils seront compilés en tant que fichiers qui existent réellement dans le projet).
PROS
CONTRE
Ajouter à chacun de consommer du projet
.csproj
fichier:ping quelqu'un sur un post, ils n'ont pas participé ne fonctionne pas. Si vous voulez ErikPhilips de voir ce commentaire, vous auriez à lui ping sur sa réponse originale à cette question
Je voulais juste faire remarquer qu'un inconvénient de cette méthode est que si vous modifiez un fichier lié, vous devez redémarrer le projet pour la tester, de sorte qu'il peut être assez ennuyeux pour par exemple modifier un fichier CSS à essayer des choses qui devraient normalement être montré immédiatement avec un rafraîchissement du navigateur.
Quand j'ajoute cshtml fichiers comme des liens, il n'y a pas intellisense et VS la traite comme tous les Rasoir est "cassé" avec des lignes rouges, en vertu du code. Je n'ai toujours pas compris comment faire pour travailler autour de cette stackoverflow.com/questions/41511770/...
OriginalL'auteur
Il y a de nouvelles options (à mon humble avis) une meilleure disponible.
Je prendrais avantage de l'organiser comme
Feature
les épissures ASP MVC de Base, cela permettrait d'économiser beaucoup de temps sur la route, je le recommande en 2 étapes.D'abord, organiser/mettre une zone appelée
Features
épissures MSDN ref. fil jusqu'comme dans l'article et bien expliqué.//you're telling ASP that you've other Feature areas that it should look
public IEnumerable<string> ExpandViewLocations(ViewLocationExpanderContext context,
IEnumerable<string> viewLocations)
{
//Error checking removed for brevity
var controllerActionDescriptor =
context.ActionContext.ActionDescriptor as ControllerActionDescriptor;
string featureName = controllerActionDescriptor.Properties["feature"] as string;
foreach (var location in viewLocations)
{
yield return location.Replace("{3}", featureName);
}
}
Deuxième, intégrer Fonctionnalités dans un
Shared project
ouPortable Libraries
. J'ai joint des liens surcomment ce faire de R. Williams et MSDN.
En résumé, depuis que vous l'avez déjà dans une partie commune de la considèrent comme une fonction et de l'intégrer à l'intérieur d'un portable lib ou un Projet Partagé. Un bel article de R. Williams.
OriginalL'auteur transformer