6 Stimmen

Ich habe einen Fehler beim Erstellen eines .vdproj auf msbuild mit nant

Ich gewöhne mich daran, nant für Build-Releases zu verwenden. Aber ich habe begonnen, asp.net MVC zu verwenden, und ich wähle das Setup für die Installation mit einer .vdproj.

Aber, wenn ich die:

< exec program="${dotnet.dir}/msbuild.exe" commandline='"./Wum.sln" /v:q /nologo /p:Configuration=Release' />

in nant, ist mein Ergebnis:

\[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.

Hat jemand einen Anhaltspunkt oder eine Lösung?

Wenn ich devenv verwende, habe ich dann ein Problem?

10voto

CRice Punkte 11793

Hier ist, wie ich tat dies vor kurzem mit devenv als msbuild wird nicht tun, .vdproj-Dateien. Dieser Artikel half wirklich mit der Aktualisierung der .vdproj-Datei zuerst: 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>

0 Stimmen

@GarrisonNeely haben Sie ein Skript ausprobiert wie %DevEnv% "%BaseSln%" /build "%BuildConfiguration%|%BuildPlatform%" /Project "%BaseVdproj%" /Out "vs_errors.txt" ?

0 Stimmen

Gilt auch für MSBuild-Skript ( *.targets ) ?

7voto

Sayed Ibrahim Hashimi Punkte 43069

MSBuild kann keine .vdproj-Projekte erstellen. Hierfür sollten Sie Visual Studio (devenv.com) verwenden.

0 Stimmen

... oder von Visual Studio .NET Setup and Deployment Project zu WiX wechseln, das in VS 2010 ohnehin unterstützt wird.

0 Stimmen

WARUM MSBuild keine .vdproj-Projekte erstellen kann ? eine vollständige Referenz in MSDN ? Wie auch immer, Wix hat sehr große Lernkurve

0 Stimmen

@DerVorsitzende Wix hat sehr große Lernkurve und Microsoft hat Visual Studio-Erweiterungen für Installer-Projekte in VS 2013, VS 2015 und VS 2017

3voto

Andrew Lewis Punkte 4796

Zu Ihrer Information: Dies wird in .NET 4.0 noch nicht unterstützt.

1voto

Siy Williams Punkte 2366

Nur um das zu erweitern CRise Beitrag - Erstellen eines vdproj-Projekts mit VS2010 devenv über die Befehlszeile funktioniert nicht. Pre-2010 funktioniert gut ich glaube (siehe Linktext )

0 Stimmen

Sieht aus, als gäbe es einige Probleme, ich habe 2008 verwendet. Microsoft sagte: "Der Hotfix wird voraussichtlich Mitte August zur Verfügung stehen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X