2016-11-10 3 views
1

Ich habe die folgende Post-Build-Ereignis in meinem Projekt definiert zu erkennen:Wie Visual Studio erhalten ein Netzlaufwerk-Mapping

if "$(ConfigurationName)"=="Release" ("$(ProjectDir)PostBuildRelease.bat" "$(TargetDir)") 

Also, wenn ich das Projekt im Release-Modus bauen, wird die folgende .bat Datei ausgeführt :

PostBuildRelease.bat

CMD 
SET parameter=%1 
CD %1 
ECHO "Copying temporary file..." 
COPY FileDeleter.exe temp.exe 
ECHO "Merging dependancies..." 
"..\..\ILMerge.exe" /out:"FileDeleter.exe" /targetPlatform:"v4" "temp.exe" "Microsoft.WindowsAPICodePack.dll" "Microsoft.WindowsAPICodePack.ExtendedLinguisticServices.dll" "Microsoft.WindowsAPICodePack.Sensors.dll" "Microsoft.WindowsAPICodePack.Shell.dll" "Microsoft.WindowsAPICodePack.ShellExtensions.dll" 
ECHO "Removing temporary file..." 
DEL temp.exe 

Alles, was es tut, ist die Baugruppe in eine temporäre lo kopieren Kation, füge die benötigten Abhängigkeiten in eine endgültige ausführbare Datei ein FileDeleter.exe, und entfernt dann die temporäre Datei.

Das hat gut funktioniert, wenn das Projekt auf einem lokalen Laufwerk gespeichert wurde, aber nachdem ich das Projekt auf einem Netzlaufwerk zu bewegen, bekomme ich diese Fehler, wenn in Release-Modus Aufbau:

'\\file\IT\Internal Apps\AppDev\Applications\WpfFileDeleter\WpfFileDeleter\bin\Release\' 
CMD does not support UNC paths as current directories. 
C:\Windows>"Copying temporary file..." 
The system cannot find the file specified. 
"Merging dependancies..." 
'"..\..\ILMerge.exe"' is not recognized as an internal or external command, 
operable program or batch file. 
"Removing temporary file..." 
Could Not Find C:\Windows\temp.exe 

CMD beschwert sich über nicht UNC unterstützt Pfade.

Ich weiß jedoch, dass das betreffende Laufwerk (\\File) tatsächlich auf die Y:\ Laufwerk zugeordnet - so kann ich durch gezielte Y: statt \\file\ in das Verzeichnis, in CMD navigieren.

Die Frage ist - wie kann ich Visual Studio dazu bringen, diese Laufwerkszuordnung standardmäßig zu erkennen, nachdem alle meine Projekte auf dieses Netzlaufwerk verschoben wurden?

+0

geben Sie absolute URL. z.B. Y: \ FileDeleter.exe beginnt mit dem Laufwerk. Sie sollten Lese- und Schreibberechtigung für dieses Laufwerk haben. – karman

+0

Wenn Sie als Administrator arbeiten, haben Sie nur Zugriff auf Laufwerke, die als Admin zugeordnet sind. –

+0

@karman Danke für deinen Kommentar - Siehe die Antwort unten mit meinem Kommentar für meine Lösung. Ich frage mich, ob es eine Möglichkeit gibt, VS zu veranlassen, das aktuelle Verzeichnis automatisch auf die zugeordnete URL zu setzen – Bassie

Antwort

1

Ich habe gelernt, dass Batch dosnt wie über ein Netzwerk-Verzeichnis gehen, wenn Sie es als Laufwerk mit pushhd hinzufügen. Das hat für mich bei der Arbeit im Netzwerk wie ein Zauber gewirkt.

PUSHD ist ein interner Befehl. Wenn die Befehlserweiterungen der PUSHD Befehl deaktiviert wird kein Netzwerk (UNC) Pfad akzeptieren“

. Quelle: http://ss64.com/nt/pushd.html

+1

Dies funktionierte in Verbindung mit der Übergabe der absoluten URL im Post-Build-Ereignis: 'if" $ (ConfigurationName) "==" Release " ("$ (ProjectDir) PostBuildRelease.bat" "Y: \ Interne Apps \ AppDev \ Programme \ WpfFileDeleter \ WpfFileDeleter \ bin \ Release \") ' – Bassie

+0

Froh, ich könnte helfen :) – NizonRox

+0

Ich fügte auch meine eigene Antwort, die Sie möglicherweise nützlich finden – Bassie

0

konnte ich eine Lösung dieses Problems mit this answer finden:

  1. Entfernen Sie das Projekt aus Visual Studio-Lösung
  2. Klicken Sie mit der rechten Maustaste auf die Lösung und "Vorhandenes Projekt hinzufügen"
  3. Navigieren Sie zu der .csproj und stellen Sie sicher, dass Sie mit dem zugeordneten Laufwerk dorthin navigieren. Y:\folder\test statt \\file\folder\test)
  4. Nun, wenn das Projekt hinzugefügt wird, wird die TargetDir Variable das zugeordnete Laufwerk anstelle von \\file Bedeutung eingestellt wird, dass keine Änderungen an dem Post-Build-Ereignisse oder die Batchdatei erforderlich sind.

Eine weitere Möglichkeit, wie ich Team Foundation Dienstleistungen in VS verwende, ist es, alle vorhandenen lokalen git Repositories entfernen aus Team Explorer ->Manage Connection ->Local Git Repositories und dann die gleichen Stellen erneut hinzuzufügen, aber wieder, wenn Navigieren Sie zum Ordner, verwenden Sie Y:\ anstelle von \\file.

Jetzt wird jedes Projekt, das ich aus diesen Repositorys öffne, automatisch TargetDir Pfade mit dem zugeordneten Laufwerk festgelegt.


Die andere Antwort hier arbeitete, erfordert aber die Post-Build-Ereignis Ändern der hartcodierte abgebildet Weg, sowie auch die Änderung der Batch-Datei zu verwenden PUSHD statt CD zu verwenden.

Verwandte Themen