Dans ce cas, vous devrez spécifier la propriété MSBuild VisualStudioVersion=11.0. J'ai juste écrit à ce sujet à l' http://sedodream.com/2012/08/19/VisualStudioProjectCompatabilityAndVisualStudioVersion.aspxj'ai collé ci-dessous pour votre commodité.
L'une des fonctionnalités les plus demandées de Visual Studio 2012 a la capacité d'ouvrir des projets dans les deux VS 2012 ainsi que par rapport à 2010 (nécessite visual studio 2010 SP1). Dans le cas où vous ne l'avez pas entendu, nous ne l'implémentation de la fonctionnalité. Vous demandez peut-être comment nous avons été capables de faire cela et comment cela peut avoir un impact sur vous.
Si vous ouvrez le .csproj/.vbproj pour un Projet Web créé dans VS2010, vous verrez l'instruction d'importation suivante.
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\
v10.0\WebApplications\Microsoft.WebApplication.targets" />
Lorsque vous ouvrez ce projet de VS 2012 il y a quelques modifications apportées à votre fichier de projet pour s'assurer qu'il peut être ouvert dans les deux VS 2010 SP1 et VS 2012. L'un des changements apportés au projet lorsqu'il est chargé pour la première fois dans VS 2012 est d'ajouter ce qui suit pour remplacer cette instruction import.
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">
$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
Nous avons retiré les codée en dur 10.0, et a plutôt utilisé la propriété VisualStudioVersion. Lors de la construction dans Visual Studio 2012, cette valeur sera toujours 11.0, mais pour VS 2010, il n'existe pas. C'est pourquoi nous avons manqué à 10.0 ci-dessus.
Il y a quelques scénarios où la construction de la ligne de commande nécessitera de définir explicitement cette propriété. Avant de nous y rendre laissez-moi vous expliquer comment cette propriété est défini (dans cet ordre)
- Si VisualStudioVersion est définie comme une variable d'environnement/global MSBuild propriété, qui est utilisé.
- C'est de cette manière VS et VS développeur invite de commande, définissez cette valeur
- Basé sur la version du format de fichier de l' .la sln fichier (ensemble d'outils utilisé est la sln format de fichier -1)
- Pour simplifier cette déclaration, l' .la sln fichier construira avec la spécification VisualStudioVersion à la valeur de la version de VS, qui l'a créé .la sln fichier.
- Choisissez par défaut
- 10.0 si VS 2010 est installé
- Plus de version sous-ensemble d'outils de la version installée
Pour le #2, lorsque vous construisez une .la sln fichier de la valeur de VisualStudioVersion sera -1 du Format de la Version trouvée dans le .la sln fichier. La chose importante à noter ici est que si vous construisez une .la sln fichier il va construire avec la valeur de VisualStudioVersion correspondant à la version de VS, qui l'a créé .la sln fichier. Donc, si vous créez une .la sln fichier dans VS2012 et il est toujours à construire .la sln fichier de la valeur pour VisualStudioVersion sera 11.0. Dans de nombreux cas, si vous construisez .la sln fichier que vous êtes bon.
Si vous êtes à la construction .csproj/.les fichiers vbproj w/o passant par un .la sln fichier? Si vous créez un projet web à partir de la ligne de commande (pas le développeur de l'invite de commandes) alors la valeur de VisualStudioVersion utilisé sera 10.0. C'est un artefact de l'propriétés qui je l'ai montré ci-dessus. Dans ce cas, vous devez passer cela comme une propriété MSBuild. Par exemple
msbuild.exe MyAwesomeWeb.csproj /p:VisualStudioVersion=11.0
Dans ce cas, je suis de passage dans la propriété explicitement. Ce sera toujours la priorité sur tout autre mécanisme permettant de déterminer la valeur de VisualStudioVersion. Si vous utilisez la tâche MSBuild dans un script de compilation, vous pouvez spécifier la propriété, soit dans les Propriétés de l'attribut ou de la AdditionalProperties attribut. Voir mon précédent billet sur la différence entre les Propriétés et les AdditionalProperties.
Si vous rencontrez un drôle de comportement lors de la construction, de la publication, et vous remarquez que le mal .objectifs de fichiers sont importés, alors vous pouvez avoir besoin de spécifier cette propriété.