Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Referenced dll σε υποφάκελο

Îåêßíçóå áðü ôï ìÝëïò skokk. Τελευταία δημοσίευση από το μέλος KostasKan στις 04-03-2010, 22:26. Υπάρχουν 5 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  03-01-2010, 13:46 56143

    Referenced dll σε υποφάκελο

    Χρόνια πολλά και καλή χρονιά σε όλους!

    Θα ήθελα να κάνω μια ερώτηση μήπως και κάποιος μπορεί να βοηθήσει γιατί έχω αρχίσει να το χάνω.. Tongue Tied

    Σε κάποια Winforms εφαρμογή που αναπτύσω χρησιμοποιώ αρκετά 3rd party dlls τα οποία αντιγράφονται αυτόματα κατά το build στον φάκελο όπου βρίσκεται και το εκτελέσιμο exe ("..\bin\Debug\").
    Αυτό που θα ήθελα είναι να μεταφέρω όλα αυτά τα dlls σε κάποιον υποφάκελο (πχ "..\bin\Debug\Libs\") έτσι ώστε να συμαζευτεί λίγο το χάος των αρχείων στον κύριο φάκελο της εφαρμογής.
    Βρήκα κάποια σχετικά άρθρα αλλά τελικά δεν κατάφερα να το κάνω να δουλέψει.

    Σαν δεύτερο σκέλος στην παραπάνω ερώτηση, υπάρχει μήπως η δυνατότητα να αποθηκεύεις όλα τα referenced dlls σε οποιονδήποτε φάκελο (absolute path, όχι μόνο σε υποφάκελο relative της κύριας εφαρμογής) και να τα φορτώνεις κατά την έναρξη της εφαρμογής;

    Σημ: Δουλέυω σε C#, VS2008 SP1, .NET Framework 3.5 SP1

    Ευχαριστώ προκαταβολικά,
    Χρόνια πολλά και πάλι!
  •  03-01-2010, 15:00 56144 σε απάντηση της 56143

    Απ: Referenced dll σε υποφάκελο

    Καλή Χρονιά με υγεία!
    Αν κατά τη διάρκεια που κάνεις Add Reference στο project σου έχει τα dll σε κάποιο absolute path και τα προσθέσεις απο εκεί, μπορείς να επιλέξεις μετα μεσα στα References μια-μια τις βιβλιοθήκες και στα properties τους να αλλάξεις το Copy Local: από True => False. Έτσι το πετυχαίνεις αυτό που θές;
  •  03-01-2010, 15:06 56145 σε απάντηση της 56143

    Απ: Referenced dll σε υποφάκελο

    Καλή χρονιά και σε σένα,

    Δεν ξέρω κατά πόσο σε εξυπηρετεί αυτό που θέλεις να κάνεις στην διάρκεια ανάπτυξης της εφαρμογής σου.
    Αυτό μπορείς να το ορίσεις στο Deployment, υποθέτω ότι θα κάνεις deploy την εφαρμογή σου με κάποιο Setup Deployment Tool.

    Δεν έχω κάνει ποτέ κάτι τέτοιο προσωπικά, ενώ κάνω build να πηγαίνουν τα referenced assemblies σε συγκεκριμένο φάκελο,
    ξέρω όμως πως όσο τα assemblies είναι private, μπορείς να τα έχεις ή στο Root Folder της εφαρμογής σου, σε κάποιο υποφάκελο
    μέσα στο Folder της εφαρμογής σου ή στην GAC.
    Αλλιώς θα πρέπει να κάνεις τα assemblies σου strong naming και να ορίσεις που βρίσκονται μέσα στο .config αρχείο της εφαρμογής.

    Όσον αφορά τα 3rd parties, προφανώς θα τα έχουν strong named, αλλά αυτό πρέπει να το ελέγξεις πολύ εύκολα από το Properties Window.

    [EDITED]

    @Mariosk: Αυτό απλά δεν θα του αντιγράψει το Referenced Assembly στο Bin Folder, δεν μπορεί να ορίσει συγκεκριμένο φάκελο.
    Θα μπορούσε βέβαια να αντιγράψει όλα τα Assemblies Που θέλει να δουλέψει σε ένα φάκελο μέσα στον Bin Folder και να τα κάνει Reference
    από εκεί καθώς επιλέγοντας False την συγκεκριμένη επιλογή για κάθε Assembly, για να πετύχει αυτό που ζητάει. Στο Rebuild
    δεν σβήνονται οι Custom Folders.



  •  03-01-2010, 15:32 56147 σε απάντηση της 56143

    Απ: Referenced dll σε υποφάκελο

    Αυτό που προσπαθείς να κάνεις ονομάζεται probing (βασικά η διαδικασία ονομάζεται probing) και μπορείς να διαβάσεις περισσότερα εδώ http://msdn.microsoft.com/en-us/library/15hyw9x3.aspx όπου στο τέλος υπάρχει κι ένα μικρό sample config που μπορείς να χρησιμοποιήσεις σαν μπούσουλα γι'αυτό το οποίο θέλεις.
    Παναγιώτης Κεφαλίδης

    "Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
  •  03-01-2010, 17:03 56148 σε απάντηση της 56143

    Απ: Referenced dll σε υποφάκελο

    Σας ευχαριστώ όλους για τις πληροφορίες.
    Απόψε το βράδυ θα δοκιμάσω αυτά που μου προτείνατε και θα σας ενημερώσω για τα αποτελέσματα!
  •  04-03-2010, 22:26 57446 σε απάντηση της 56148

    Απ: Referenced dll σε υποφάκελο

    Αν πιθανά να έχεις βρεί τη λύση, σε συνέχεια αυτού που αναφέρει ο φίλος προηγουμένος βάζεις στο application config file το παρακάτω...

    <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
       <probing privatePath="upofakelos1;upofakelos2"/>
      </assemblyBinding>
     </runtime>

     

    όπου ypofakelos1 κτλ είναι ο φάκελος με τα libraries που βρίσκεται μέσα στο root του exe.

     

Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems