2009-02-13 7 views

Répondre

34

La bonne réponse est oui. Il suffit de modifier le fichier csproj (msbuild) et changer le ProjectGuid et de supprimer les ProjectTypeGuids:

<ProjectGuid>{9845066A-3C9E-4F51-8F5F-8F513E8D03C1}</ProjectGuid> 

Il est vraiment aussi simple que cela.

+0

J'ai VS2010 et ce guid n'a pas fonctionné pour moi, j'ai essayé celui-ci: ' {2CAAF0E8-A840-4ABF-BF2A-BCD4338D80B5}' –

+1

Quel est le point de changer 'ProjectGuid'? Cela n'identifie-t-il pas uniquement le projet? Pour moi, il semble qu'un nouveau soit généré pour chaque projet. – Sam

+0

Comme alternative ** changer le type de sortie du projet à la bibliothèque de classes, vous pouvez trouver que dans les propriétés de votre projet sous l'onglet Application **, voir http://stackoverflow.com/a/11536160/313113 – bitek

0

No. Votre meilleur pari est de créer un Class.Library et copiez les fichiers .cs dans votre nouveau projet.

Une bibliothèque de classes ne fera rien avec des pages .aspx, elle les verra comme des fichiers dans la solution.

+0

J'ai une application Web principale qui charge des contrôles à partir d'une autre application Web. Il devrait les charger à partir d'une bibliothèque de classes, parce que j'ai maintenant deux fichiers web.config et c'est ennuyeux. –

1

Je suis venu ici pour avoir une bibliothèque de classes avec des éléments de menu mvc. C'est, faites un clic droit sur le dossier des vues pour ajouter une vue ou un contrôleur pour ajouter un contrôleur dans une bibliothèque de classes.

J'ai été capable d'y parvenir en éditant mon mvc.web.app.csproj, copiez le <ProjectTypeGuids /> dans mon projet class.lib.csproj.

Pour plus de contexte sur ce que je fais, voir: How to reuse Areas, Controllers, Views, Models, Routes in multiple apps or websites.

31

Si vous voulez faire exactement la même chose que d'un projet de bibliothèque de classes, voici comment le faire pour un projet Visual Studio 2010:

  1. Modifier le fichier csproj

    • Sous PropertyGroup
      • Retirez ProjectTypeGuids
      • Retirez UseIISExpress
      • Ajouter <FileAlignment>512</FileAlignment>
    • changement <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />-<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
    • Retirez <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
    • Retirer <ProjectExtensions>
    • Sous <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
      • changement OutputPath-bin\Debug\
    • Sous <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
      • changement OutputPath-bin\Release\
  2. Ouvrez le projet dans Visual Studio

    • Retirez l'une des références suivantes si elles ne sont pas utilisées
      • système .Configuration
      • System.Drawing
      • System.EnterpriseServices
      • System.Web
      • System.Web.ApplicationServices
      • System.Web.DynamicData
      • System.Web.Entity
      • System.Web.Extensions
      • System.Web.Services
    • Supprimer tous les fichiers/dossiers suivants si elles sont indésirables/inutilisés
      • App_Data
      • * .aspx
      • Web.config
      • scripts
      • styles
      • Global.asax
      • Site.master
+1

Cela a fonctionné pour moi dans VS2013. – Tom

+3

Fonctionne également dans VS2015 –

Questions connexes