Visual Studio Externe Dateien immer ins Ausgabe Verzeichnis kopieren.

  • Allgemein

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Andy.

    Visual Studio Externe Dateien immer ins Ausgabe Verzeichnis kopieren.

    Hallo, es gibt für externe Dateien ja die Eigenschaft das man diese immer in das Ausgabe Verzeichnis kopieren kann.



    Meine frage ist nun, ob es im Projekt eine Einstellung gibt, was den Standard wert dieser Eigenschaft festlegt.
    Ich hätte nämlich gerne das alle Dateien immer kopiert wenn diese neuer sind.

    beste Grüße

    Andy
    Meine Projekte Genesis Game Engine | GFX | smartli.me - Der smarte URL shortener

    Das musst du in deinem *.csproj machen.

    Sieht alles auf den ersten Blick furchtbar aus, aber da steigt man schnell rein.

    Du kannst sowas hier in der Art nutzen, um alle relevanten Dateien zu kopieren:


    XML-Quellcode

    1. <ItemGroup>
    2. <Content
    3. Include="..\libs\x64\**\*.*"
    4. CopyToOutputDirectory="Always"
    5. TargetPath="x64\%(Filename)%(Extension)"
    6. />
    7. </ItemGroup>
    Quellcode lizensiert unter CC by SA 2.0 (Creative Commons Share-Alike)

    Meine Firma: Procyon Systems

    Selbstständiger Softwareentwickler & IT-Techniker.
    kann ich da auch einstellen, dass die nuget packete mit in die dll integriert werden. Aktuell ist es so, dass Benutzer meiner dll diese manuel hinzufügen müssen.
    Meine Projekte Genesis Game Engine | GFX | smartli.me - Der smarte URL shortener

    Eigentlich müsste das von alleine passieren. Die NuGet-Pakete sind deine Abhängigkeiten.
    Wenn du mit ​install-package oder ​dotnet add package ein solches hinzufügst, dann wird das eigentlich auch auf alle Projekte übertragen, die dein Projekt nutzen...

    V.a. wenn dein Projekt ebenfalls ein NuGet-Paket ist.
    Quellcode lizensiert unter CC by SA 2.0 (Creative Commons Share-Alike)

    Meine Firma: Procyon Systems

    Selbstständiger Softwareentwickler & IT-Techniker.
    Ich habe dieses Problemm hier github.com/AndresTraks/BulletSharpPInvoke/issues/55. Ich denke das ich wohl daran nichts ändern kann.
    Meine Projekte Genesis Game Engine | GFX | smartli.me - Der smarte URL shortener

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Andy“ ()

    siycah schrieb:

    Das musst du in deinem *.csproj machen.
    Nicht unbedingt.
    ====
    @Andy
    Das mit dem automatischen Kopieren innerhalb des Build-Prozesses funktioniert nur mit Assemblies.
    Sobald Du native DLLs dabei hast, musst Du zwischen x86 und x64 unterscheiden und das machst Du am besten im PostBuild-Event.
    Falls Du sowohl x86- als auch x64-DLLs an Bord hast, die nicht als Referenz verlinkt sind (bei einem PlugIn-System) wird es etwas tricky.
    Im PostBuild in Deinem Projekt kannst Du Deine Kopierbefehle reinschreiben, das ist eine Batch-Datei

    die könnte so aussehen:
    Spoiler anzeigen
    REM auf das ####-Projekt wird im Hauptprojekt nicht verwiesen,
    REM sie benötigt GUI-Texte, die in der ####.resources.dll abgelegt sind

    REM DLL-Verzeichnis "Basler" erstellen
    mkdir $(SolutionDir)$(SolutionName)\$(OutDir)Basler\
    REM die DLLs im DLLx86 | DLLx64-Verzeichnis zum Hauptprogramm
    copy $(ProjectDir)DLL$(PlatformName)\*.dll $(SolutionDir)$(SolutionName)\$(OutDir)Basler\
    REM xdevcon.exe ebenfalls kopieren
    copy $(ProjectDir)DLL$(PlatformName)\*.exe $(SolutionDir)$(SolutionName)\$(OutDir)Basler\

    REM die erstellte DLL+PDB ins Unterverzeichnis neben das Hauptprogramm kopieren
    copy $(TargetPath) $(SolutionDir)$(SolutionName)\$(OutDir)Basler\
    copy $(ProjectDir)$(OutDir)\$(TargetName).pdb $(SolutionDir)$(SolutionName)\$(OutDir)Basler\

    REM die Resources-DLL(s) einzeln, dafür gibt es kein Makro
    REM das Resources-DLL-Ziel-Unterverzeichnis "de" muss explizit angelegt werden
    mkdir $(SolutionDir)$(SolutionName)\$(OutDir)de\
    copy $(TargetDir)de\*.dll $(SolutionDir)$(SolutionName)\$(OutDir)de\


    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „RodFromGermany“ ()

    Ah ok, dass ist interessant. Also lasse ich die nativen dll's in das dafür vorgesehene Verzeichnis kopieren. Habe mich mit den PostBuild events noch nie beschäftigt. War recht froh, dass ich es hin bekommen habe mit docfx eine documentation zu erstellen. Werde mir am besten mal ein Video dazu anschauen.
    Meine Projekte Genesis Game Engine | GFX | smartli.me - Der smarte URL shortener