ο τύπος interop δεν μπορεί να ενσωματωθεί
<p>δημιουργώ μια εφαρμογή στο .net 4.0 (beta2) στο c #.</p><p>όταν προσπαθώ να χρησιμοποιήσω μια συνέλευση που ονομάζεται "activehomescriptlib", έχω το ακόλουθο σφάλμα:</p><blockquote> <p>ο τύπος interop 'activehomescriptlib.activehomeclass' δεν μπορεί να ενσωματωθεί. χρησιμοποιήστε την αντίστοιχη διεπαφή.</p> </blockquote><p>όταν αλλάζω το πλαίσιο στην έκδοση 3.5, δεν έχω λάθη.</p><p>τι είναι ένας τύπος interop και γιατί συμβαίνει αυτό μόνο όταν χρησιμοποιώ το πλαίσιο 4.0;</p>
<p>το .net 4.0 επιτρέπει στα πρωτεύοντα σύνολα interop (ή μάλλον, τα bits που χρειάζεστε) να ενσωματωθούν στη συνέλευση σας, ώστε να μην χρειάζεται να τα αναπτύξετε παράλληλα με την εφαρμογή σας.</p><p>για οποιονδήποτε λόγο, αυτή η συνέλευση δεν μπορεί να ενσωματωθεί - αλλά αυτό ακούγεται σαν να μην είναι πρόβλημα για εσάς. ανοίξτε την καρτέλα ιδιότητες για τη συνέλευση στο visual studio 2010 και ορίστε "ενσωμάτωση τύπων interop" σε "false".</p><p>edit: δείτε επίσης την <a href="https://stackoverflow.com/a/4553402/641833">απάντηση</a> του michael gustus, καταργώντας το επίθημα <code>class</code> από τους τύπους που χρησιμοποιείτε.</p>
Αν χρησιμοποιείτε τάξεις Objective-C, τότε η `[myObject isKindOfClass: [InterestingClass class]]`δοκιμή είναι διαθέσιμη. Αν χρησιμοποιείτε πρωτόγονων τύπων (η οποία ερώτησή σας, αναφέροντας το «διπλό» τύπου, προτείνει), τότε δεν μπορείτε. Ωστόσο, αν κάνετε κάποια πολύ funky πράγματα, ο compiler μπορεί να σας πει πότε πρωτόγονων τύπων ή δεν ταιριάζουν, και όταν δεν θα εκτελέσει έμμεση προώθηση στο επιθυμητό τύπο.


Θα ήταν χρήσιμο να γνωρίζουμε λίγο περισσότερα για το ποιο είναι το συγκεκριμένο πρόβλημα είναι ότι προσπαθείτε να λύσετε, διότι μπορεί να είναι ότι η λύση δεν περιλαμβάνει την ανίχνευση της δημιουργίας διπλασιάζεται σε όλα :-). Υπάρχουν κάποιες «αμυχές» που περιλαμβάνουν τη χρήση ενός System.Core.dll από το Framework 3.5 για να τρέξει με .net 2.0, αλλά προσωπικά δεν θα ήθελα να χρησιμοποιήσετε ένα τέτοιο κάπως σαθρά θεμέλια.


Δείτε εδώ: [LINQ υποστήριξη για .NET 2.0](http://weblogs.asp.net/fmarguerie/archive/2007/09/05/linq-support-on-net-2-0.aspx)



> 
> 1. Δημιουργήστε μια νέα εφαρμογή κονσόλας
> 2. Κρατήστε μόνο συστήματος και System.Core όπως αναφέρεται συνελεύσεις
> 3. Ρύθμιση αντιγραφής Τοπική να ισχύει και για System.Core, επειδή δεν υπάρχει στο .NET 2.0
> 4. Χρησιμοποιήστε ένα ερώτημα LINQ στην Κύρια μέθοδο. Για παράδειγμα, η μία κάτω.
> 5. Χτίζω
> 6. Αντιγράψτε το σύνολο της παραγωγής κάδο σε μια μηχανή όπου μόνο είναι εγκατεστημένο το .NET 2.0
> 7. Τρέξιμο
> 
> 
> 


(Απαιτεί .net 2.0 SP1 και δεν έχω ιδέα αν ομαδοποίηση του System.Core.dll παραβιάζει την EULA) Το ίδιο πρόβλημα εδώ ..   

Απλά διακοσμήσετε τάξη μεσολάβησης σας με την ακόλουθη ιδιότητα


[System.ComponentModel.DesignerCategoryAttribute ( "κωδικός")]


για να απαλλαγούμε από τη λειτουργία άχρηστο σχεδιασμό. Επιστροφή με .Net 1.1 συσκότιση ήταν απαραίτητη: Κωδικός μεταγλώττιση ήταν εύκολο, και θα μπορούσε να πάει από το συγκρότημα, με την IL, με C # κώδικα και έχουν συνταχθεί και πάλι με πολύ λίγη προσπάθεια.


Τώρα με .Net 3.5 δεν είμαι καθόλου σίγουρος. Δοκιμάστε μεταγλώττιση ένα συγκρότημα 3.5? αυτό που παίρνετε είναι μια μακρά μακριά από τη σύνταξη.


Προσθέστε τις βελτιστοποιήσεις από 3,5 (πολύ καλύτερα από 1,1) και τον τρόπο ανώνυμο τύπων, αντιπροσώπους και ούτω καθεξής αντιμετωπίζονται με αντανάκλαση (που είναι ένας εφιάλτης να ξαναμεταγλωττίσετε). Προσθέστε λάμδα εκφράσεις, compiler «μαγεία», όπως Linq-σύνταξη και `var`, και C # 2 λειτουργίες, όπως `yield`(η οποία οδηγεί σε νέες κατηγορίες με δυσανάγνωστο όνομα). Decompiled κωδικό σας καταλήγει σε μεγάλο μακριά από μεταγλωττιστεί.


Μια επαγγελματική ομάδα με τα μέρη του χρόνου θα μπορούσε ακόμα να αναστρέψει τη λειτουργία πίσω και πάλι, αλλά στη συνέχεια το ίδιο ισχύει και για κάθε καλυμμένος κώδικα. Τι κωδικό πήραν από ότι θα ήταν αδύνατο να συντηρηθεί και πολύ πιθανό να είναι πολύ προβληματικό.


Θα ήθελα να συστήσω-κλειδιά υπογραφή συνελεύσεις σας (που σημαίνει ότι αν οι χάκερ μπορούν να μεταγλωττίσετε ένα που πρέπει να ξαναμεταγλωττίσετε όλα), αλλά δεν νομίζω ότι συσκότιση της αξίζει τον κόπο. Δυστυχώς, το μόνο API που δεν έχει καταργηθεί βρίσκεται στο πλαίσιο ApplicationServices, η οποία δεν έχει ένα αρχείο υποστήριξης γέφυρα, και ως εκ τούτου δεν είναι διαθέσιμο στη γέφυρα. Αν θέλουν να χρησιμοποιήσουν ctypes, μπορείτε να χρησιμοποιήσετε ATSFontGetFileReference μετά αναζητώντας τον ATSFontRef.


Κακάο δεν έχει καμία εγγενή υποστήριξη, τουλάχιστον ως 10,5, για να πάρει τη θέση ενός γραμματοσειράς. Όχι, αυτό που κάνετε είναι μια χαρά. Μην αφήσετε αυτούς τους ανθρώπους να σας μπερδέψει.


Εάν έχετε γράψει τις διαδικτυακές υπηρεσίες με .net, στη συνέχεια, τα πληρεξούσια αναφοράς που παράγεται από .net πρόκειται να είναι αρκετά κατάλληλο. Η κατάσταση που περιγράφει (όπου θα είναι και παραγωγός και καταναλωτής) είναι η ιδανική κατάσταση.


Αν χρειαστεί να συνδεθείτε σε υπηρεσίες web που είναι *άγνωστο* κατά τη μεταγλώττιση, τότε θα θέλετε μια πιο δυναμική προσέγγιση, όπου μπορείτε να συναγάγει το «σχήμα» της υπηρεσίας web.


Αλλά ξεκινήστε με τη χρήση της αυτόματης δημιουργείται τάξη μεσολάβησης, και μην ανησυχείτε γι 'αυτό μέχρι να χτυπήσει έναν περιορισμό. Και όταν το κάνεις - επανέλθω σε στοίβα υπερχείλιση ;-) Η προτιμώμενη μέθοδος είναι να χρησιμοποιήσετε πραγματικά την ιδιότητα υπό όρους για να τυλίξει τις κλήσεις εντοπισμού σφαλμάτων σας, μην χρησιμοποιήσετε τις οδηγίες μεταγλωττιστή. #ifs μπορεί να πάρει δύσκολες και μπορεί να οδηγήσει σε περίεργα προβλήματα κατασκευής.


Ένα παράδειγμα της χρήσης ενός υπό όρους χαρακτηριστικό είναι η εξής (σε C #, αλλά λειτουργεί σε VB.NET πολύ):



```
[ Conditional("Debug") ]
private void WriteDebug(string debugString)
{
  // do stuff
}

```

Κατά τη μεταγλώττιση, χωρίς το σετ σημαία DEBUG, κάθε κλήση προς WriteDebug θα καταργηθούν όπως υποτίθεται συνέβαινε με Debug.Write (). Αυτή είναι η διαφορά μεταξύ του [μπλοκ και ενσωματωμένα](http://www.w3.org/TR/html4/struct/global.html#h-7.5.3) στοιχεία. [`pre`είναι ένα στοιχείο επίπεδο μπλοκ](http://www.w3.org/TR/html4/sgml/dtd.html#block) . Δεν είναι νόμιμο να το βάλετε μέσα σε ένα `code`tag, το οποίο [μπορεί να περιέχει μόνο inline περιεχόμενο](http://www.w3.org/TR/html4/struct/text.html#h-9.2.1) .


Επειδή τα προγράμματα περιήγησης πρέπει να υποστηρίζει ό, τι godawful ετικέτα σούπα θα μπορούσαν να βρουν στην πραγματική διαδίκτυο, Firefox προσπαθεί να κάνει ό, τι εννοείτε. IE συμβαίνει να το χειριστεί διαφορετικά, η οποία είναι λεπτή από το spec? συμπεριφορά σε αυτή την περίπτωση είναι απροσδιόριστη, γιατί δεν πρέπει ποτέ να συμβεί.


* Θα μπορούσατε να αντί να *αντικαταστήσετε* το `code`στοιχείο με το `pre`; (Λόγω της έκδοσης μπλοκ / inline, τεχνικά που θα πρέπει να λειτουργήσει μόνο εάν τα στοιχεία είναι μέσα σε [ένα στοιχείο με περιεχόμενο «ροή»](http://www.w3.org/TR/html4/sgml/dtd.html#flow) , αλλά τα προγράμματα περιήγησης μπορεί να κάνει ό, τι θέλετε έτσι κι αλλιώς.)
* Γιατί είναι ένα `code`στοιχείο στην πρώτη θέση, αν θέλετε `pre`«s συμπεριφορά;
* Θα μπορούσατε επίσης να δώσει το `code`στοιχείο `pre`κενό «s διατήρηση της εξουσίας με το CSS [`white-space: pre`](http://www.blooberry.com/indexdot/css/properties/text/whitespace.htm), αλλά προφανώς [IE 6 τιμά μόνο ότι Αυστηρή λειτουργία](http://www.quirksmode.org/css/whitespace.html) . επανέρχομαι μετά από 10 μέρες αδράνειας στο θέμα. το μόνο που άλλαξε είναι ενα update στο fedora 34 με πυρήνα 5.11.16. το πρόβλημα παραμένει όμως σκέφτηκα μια λύση που δούλεψε.

πηγαίνουμε στον φάκελο /opt

δημιουργούμε ένα αρχείο touchpadfix.py :

import os

while os.system('cat /proc/bus/input/de… εγκατέστησα την τελευταία έκδοση του προγράμματος και εξακολουθούσα να έχω το ίδιο πρόβλημα. τελικά με τη βοήθεια απο το σχετικό [google group](https://groups.google.com/g/devede-forum/c/2thoie_dsxq) του devedeng, κατάλαβα οτι επιλέγω λάθος encoding type για το αρχείο υποτίτλων που θέλω να βάλω στην ταινία.

όταν επέλεξα το σωστό τύπο encoding για το αρχε…