J'ai une erreur sur la construction d'une .vdproj msbuild avec Nant
Question
Je me habitue à utiliser pour construire des versions Nant. Mais j'ai commencé à utiliser asp.net MVC, et je le choix faire la configuration pour l'installation avec un .vdproj.
Mais, quand je l'appelle le:
< exec program="${dotnet.dir}/msbuild.exe" commandline='"./Wum.sln" /v:q /nologo /p:Configuration=Release' />
à Nant, mon résultat est la suivante:
[exec] D:\My Documents\Visual Studio 2008\Projects\Wum\Wum.sln : warning MS B4078: The project file "Wum.Setup\Wum.Setup.vdproj" is not supported by MSBuild and cannot be built.
Quelqu'un a une idée ou une solution?
Si je le devenv, je vais avoir un problème?
La solution
MSBuild ne peut pas construire .vdproj projets. Vous devez utiliser Visual Studio (devenv.com) pour cela.
Autres conseils
Voici comment je l'ai fait récemment à l'aide devenv comme msbuild ne fera pas les fichiers .vdproj. Cet article a vraiment aidé à mettre à jour le fichier .vdproj premier: http://www.hanselman.com/blog /BuildingMSIFilesFromNAntAndUpdatingTheVDProjsVersionInformationAndOtherSinsOnTuesday.aspx
<target name="someTarget">
<!-- full path to setup project and project file (MSI -> vdproj) -->
<property name="DeploymentProjectPath" value="fullPath\proj.vdproj" />
<!-- full path to source project and project file (EXE -> csproj) -->
<property name="DependencyProject" value="fullPath\proj.csproj" />
<script language="C#">
<code>
<![CDATA[
public static void ScriptMain(Project project)
{
//Purpose of script: load the .vdproj file, replace ProductCode and PackageCode with new guids, and ProductVersion with 1.0.SnvRevisionNo., write over .vdproj file
string setupFileName = project.Properties["DeploymentProjectPath"];
string productVersion = string.Format("1.0.{0}", project.Properties["svn.revision"]);
string setupFileContents;
//read in the .vdproj file
using (StreamReader sr = new StreamReader(setupFileName))
{
setupFileContents = sr.ReadToEnd();
}
if (!string.IsNullOrEmpty(setupFileContents))
{
Regex expression2 = new Regex(@"(?:\""ProductCode\"" = \""8.){([\d\w-]+)}");
Regex expression3 = new Regex(@"(?:\""PackageCode\"" = \""8.){([\d\w-]+)}");
Regex expression4 = new Regex(@"(?:\""ProductVersion\"" = \""8.)(\d.\d.\d+)");
setupFileContents = expression2.Replace(setupFileContents,"\"ProductCode\" = \"8:{" + Guid.NewGuid().ToString().ToUpper() + "}");
setupFileContents = expression3.Replace(setupFileContents,"\"PackageCode\" = \"8:{" + Guid.NewGuid().ToString().ToUpper() + "}");
setupFileContents = expression4.Replace(setupFileContents,"\"ProductVersion\" = \"8:" + productVersion);
using (TextWriter tw = new StreamWriter(setupFileName, false))
{
tw.WriteLine(setupFileContents);
}
}
}
]]>
</code>
</script>
<!-- must build the dependency first (code project), before building the MSI deployment project -->
<exec program="Devenv.exe" commandline='"fullPath\solution.sln" /rebuild "Release" /project "${DependencyProject}" /out "fullPath\somelog.log"'/>
<exec program="Devenv.exe" commandline='"fullPath\solution.sln" /rebuild "Release" /project "${DeploymentProjectPath}" /out "fullPath\somelog.log"'/>
</target>
Pour votre information, c'est toujours pas pris en charge dans .NET 4.0
Juste pour développer crisis , après - la construction d'un projet vdproj utilisant devenv VS2010 par la ligne de commande ne fonctionne pas. Pre-2010 fonctionne très bien je crois (voir texte du lien )