Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von oehrle
Thema: Problem wenn DLL als Service / Dienst auf Server oder Desktop ausgeführt wird
Am im Forum: Rund um die Programmierung

Hallo, folgendes Problem.
Ich habe eine Anwendung, die zyklisch Daten aktualisieren soll / tut. Ich habe diese Applikation erst so gebaut, dass diese in einer Desktop-Applikation ausgeführt werden kann.
Allerdings war ich auch schon so weit vorrausschauend, dass ich von der eigentlichen Aktualisierungsthematik eine DLL erstellen lassen kann, die ich dann in einem Dienst ausführen kann.

Jetzt ist es so, wenn ich den Dienst bei mir auf meinem Rechner installiere, funnktioniert alles korrekt, alle Zugriffe funktionieren.

Installiere ich den Dienst auf dem Server mit meinem Account, dann gibt es Probleme mit Berechtigungen auf manche Verzeichnisse. Wie ist da möglich?
Arbeitet der Server nach anderen Prinzipien, oder worin kann der Unterschied liegen?

Es handelt sich um einen Windows Server.

Hat jemand einen Idee?

Thema: In Applikation Teilbereiche als anderer user ausführen
Am im Forum: Rund um die Programmierung

MMhhh. Hab ichmir schon gedacht das es nicht einfach wird. Also ob wir was mit Azure Active Directory nutzen, keine Ahnung, muss mal bei der IT nachfragen. WIr identifizieren uns jedenfalls mit 2-Faktorauthentifizierung, aber denke das hat nichts mit deiner besagten Tokennauthentifizierung zu tun.

Das nächste wäre, wie ich dann meine Applikation als Dömänenteil hingebogen ??

Also es handelt sich um eine Desktopanwendung FW 4.5. Webserver nutze ich nicht, WPF-Applikation.

Die andere Möglichkeit, ich entwickle schön weiter, erstelle Files während der Entwicklung auf einem Verzeichnis auf das ich Zugriff habe.
Wenn die Anwendung bei den Kollegen verwendet wird, kann diese ja mit dem anderen Benutzer (lokaler Benutzer) ausgeführt werden, je anchdem ist der Kollege mit diesem lokalen Benutzer am System sogar angemeldet.
Aber richtig gefallen tut mir das nicht.
Angenommen ich mache das so, mein Kollege hat ein Problem und ich schalte micht auf seinen Rechner um die Applikation zu debuggen. Geht das dann überhaupt oder gibt es dann da auch schon Probleme?

Thema: In Applikation Teilbereiche als anderer user ausführen
Am im Forum: Rund um die Programmierung

Hallo Community, bin mir nicht sicher ob die Überschrift das Thema korrekt trifft, aber ich beschreibe mal mein Problem.

Ich habe sämtliche Applikationen, bei denen die Berechtigungen und Zugriffe wegen Useraccouts sich verändern. Normalerweise werden Berechtigungen über den Windowsuser geregelt, wenn es um Schreib- oder Lesezugriffe auf unseren Fileservern geht.
Außer bei SQL-Datenbankkommunikation werden andere Benuttzer verwendet.

Jetzt muss aus IT-Sicherheitstechischen Gründen sämtliche Bereiche auf die zugegriffen wird nur noch mit lokalen Usern arbeiten.
Ich habe zum Beispiel ein Appliaktion, die holt sich Daten vom SQL-Server, das geht alles noch, weil ich da einen expliziten User bei der Verbindung einsetzen kann.
Ich verarbeite die Daten, muss dann die Ergebnisse in einer Datei auf dem Fileserver ablegen, das hat bisher ganz normal mit meinem Windows-User aus der Domäne funktioniert.

Wenn ich jetzt am Entwickeln der Anwendung bin, kann ich ja die Datei nicht wegschreiben, weil ich mit meinem Windows-User die Applikation (VisualStudio) am Laufen habe.
Gibt es die Möglichkeit, in der Anwendung einen anderen User (den lokalen User vom Fileserver) vorzuschalten ??

Ich hoffe man kann den Stuss verstehen, den ich geschrieben habe.

Wenn die Applikation von einem Kollegen ausgeführt wird, dann kann er ja die Applikation unter dem lokalen User starten.
Aber wenn ich entwickle, wie mache ich es dann? Gibt es da Möglichkeiten, den User im Code zu wechseln ??

Oder Visual Studio als anderen User zu starten ??


Habe Visual Studio probiert, unter dem lokalen User mit "Runas different User" zu starten, leider ohne Erfolg, denn: Mein Rechner kennt den lokalen User gar nicht.

Wenn ich im Code eine Datei erstelle mit File.Wite / File.xxxx gibt es da auch die Möglichkeit einen anderen User für diesen Teilbereich vorzuschalten?

Thema: Android Phone - Bilder kopieren
Am im Forum: Cross Platform Entwicklung - Mobile und IoT

Hallo, hat von euch jemand eine Idee, wie man über Windows die Bilder von der Speicherkarte kopieren kann?
Klar, es gibt Tools, aber ich möchte mir selber was bauen. Damit ich flexibel reagieren kann.
Problem ist, das dieses Laufwerk ja nicht sichtbar ist (zwar im WInExplorer, aber nicht als Verzeichnis im Code).

Thema: Click-Once Deplayment-Problem
Am im Forum: Rund um die Programmierung

Hallo, danke für die Info.
Bei dem neuen Projekt mußte unter:

  • - Sicherheit ==> das Häkchen "ClickOnce"-Sicherheitseinstellungen aktivieren aktiviert werden.

Dazu ist noch "Voll vertrauenswürdige Anwendung" aktiviert.

Dann hatte es nun wieder korrekt geklappt.
Vielen Dank.

Thema: ClickOnce: MethodAccessException beim Start
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Ok, danke erst mal für die Info.

Thema: Click-Once Deplayment-Problem
Am im Forum: Rund um die Programmierung

Habe eine Appliaktion, mit mehreren Projekten, habe ich auch schon länger am laufen. Jetzt habe ich ein zusätzliches Projekt eingebunden, weil ich ein neues Feature eingebaut habe.
Dann habe ich die Applikation veröffentlicht, konnte diese aber nicht installieren, Deployment-Error.

Kann es sein, sobald man ein anderes Projekt hinzubindet oder nur eine Methode die eine andere EXE aufruft, das dann die Applikation sich nicht mehr automatisch mit einer neueren Version sich nicht mehr installiert?

Wenn das so wäre, muss mann ja jedes mal die Applikation auf den Rechnern deinstallieren und neu installieren, absolut unbrauchbar???
Hat jemand eine Idee, wie man so ein Prblem umschiffen kann?


Hier mal das LOG-File das beim Update erscheint ... :


IDENTITIES
Deployment Identity : Datenfinder.application, Version=1.0.26.0, Culture=neutral, PublicKeyToken=b6d294c9d8a2e221, processorArchitecture=amd64
Application Identity : Datenfinder.exe, Version=1.0.26.0, Culture=neutral, PublicKeyToken=b6d294c9d8a2e221, processorArchitecture=amd64, type=win32

APPLICATION SUMMARY
* Installable application.

ERROR SUMMARY
Below is a summary of the errors, details of these errors are listed later in the log.
* Activation of F:\APPS\Fertigung\DatenFinder\Datenfinder_x64\Datenfinder.application resulted in exception. Following failure messages were detected:
+ Reference in the manifest does not match the identity of the downloaded assembly MessprogrammFinder.exe.

COMPONENT STORE TRANSACTION FAILURE SUMMARY
No transaction error was detected.

WARNINGS
There were no warnings during this operation.

OPERATION PROGRESS STATUS

Fehler
* [25.04.2022 07:16:43] : Activation of F:\APPS\Fertigung\DatenFinder\Datenfinder_x64\Datenfinder.application has started.
* [25.04.2022 07:16:44] : Processing of deployment manifest has successfully completed.
* [25.04.2022 07:16:44] : Installation of the application has started.
* [25.04.2022 07:16:45] : Processing of application manifest has successfully completed.
* [25.04.2022 07:16:47] : Found compatible runtime version 4.0.30319.
* [25.04.2022 07:16:47] : Request of trust and detection of platform is complete.


ERROR DETAILS
Fehler
Following errors were detected during this operation.
* [25.04.2022 07:17:06] System.Deployment.Application.InvalidDeploymentException (RefDefValidation)
- Reference in the manifest does not match the identity of the downloaded assembly MessprogrammFinder.exe.
- Source: System.Deployment
- Stack trace:
at System.Deployment.Application.DownloadManager.ProcessDownloadedFile(Object sender, DownloadEventArgs e)
at System.Deployment.Application.FileDownloader.DownloadModifiedEventHandler.Invoke(Object sender, DownloadEventArgs e)
at System.Deployment.Application.FileDownloader.OnModified()
at System.Deployment.Application.SystemNetDownloader.DownloadSingleFile(DownloadQueueItem next)
at System.Deployment.Application.SystemNetDownloader.DownloadAllFiles()
at System.Deployment.Application.FileDownloader.Download(SubscriptionState subState, X509Certificate2 clientCertificate)
at System.Deployment.Application.DownloadManager.DownloadDependencies(SubscriptionState subState, AssemblyManifest deployManifest, AssemblyManifest appManifest, Uri sourceUriBase, String targetDirectory, String group, IDownloadNotification notification, DownloadOptions options)
at System.Deployment.Application.ApplicationActivator.DownloadApplication(SubscriptionState subState, ActivationDescription actDesc, Int64 transactionId, TempDirectory& downloadTemp)
at System.Deployment.Application.ApplicationActivator.InstallApplication(SubscriptionState& subState, ActivationDescription actDesc)
at System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation(Uri activationUri, Boolean isShortcut, String textualSubId, String deploymentProviderUrlFromExtension, BrowserSettings browserSettings, String& errorPageUrl, Uri& deploymentUri)
at System.Deployment.Application.ApplicationActivator.PerformDeploymentActivationWithRetry(Uri activationUri, Boolean isShortcut, String textualSubId, String deploymentProviderUrlFromExtension, BrowserSettings browserSettings, String& errorPageUrl)
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Deployment.Application.ApplicationActivator.PerformDeploymentActivationWithRetry(Uri activationUri, Boolean isShortcut, String textualSubId, String deploymentProviderUrlFromExtension, BrowserSettings browserSettings, String& errorPageUrl)
at System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker(Object state)

COMPONENT STORE TRANSACTION DETAILS
No transaction information is available.

Thema: ClickOnce: MethodAccessException beim Start
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo Palladin, hast das Problem inzwischen behoben?
Was war denn die Ursache dafür?

Ich habe ein ähnliches Problem. Habe eine Appliaktion, mit mehreren Projekten, habe ich auch schon länger am laufen. Jetzt habe ich ein zusätzliches Projekt eingebunden, weil ich ein neues Feature eingebaut habe.
Dann habe ich die Applikation veröffentlicht, konnte diese aber nicht installieren, Deployment-Error.

Kann es sein, sobald man ein anderes Projekt hinzubindet oder nur eine Methode die eine andere EXE aufruft, das dann die Applikation sich nicht mehr automatisch mit einer neueren Version sich nicht mehr installiert?

Wenn das so wäre, muss mann ja jedes mal die Applikation auf den Rechnern deinstallieren und neu installieren, absolut unbrauchbar???
Hast du da eine Idee?

Thema: Bisherige Windowsapplikationen in Webservice oder Tablestumgebung laufen lassen
Am im Forum: Rund um die Programmierung

So, jetzt hab ich nochmal eine Frage. Ich nutze einen Webservice von einem Hersteller, mit dem lass ich mir Daten von dem Hersteller ausgeben, oder übergebe dem System Daten.
Wenn ich so was für meine eigene Appliaktion bauen will, dann muss ich einmal den bereich für den Server entwickeln, als auch Methodik für die Clients (das wären natürlcih unsere Rechner der Firma).
Ich denke so ein WebService ist bestimmt nicht gerade einfach zum entwickeln, oder? Legt man die Kommando- oder Befehlssyntax die z.B. der Client an den Server geben kann selber fest oder gibt es da feste Definitonen (als Beispiel: Client sagt ==> du Server, lösche Auftrags xy in Tabelle B) ?? Oder kann man diese Syntax selber festlegen?

Thema: Bisherige Windowsapplikationen in Webservice oder Tablestumgebung laufen lassen
Am im Forum: Rund um die Programmierung

Na ja, Bespiel SAP. Ich benutze etwas was mit an die hand gegeben wurde, um aus meiner Applikation Daten von dem besagten abzufufen. Da gibt es dann DLL's für Verbindung und Methodik.
Habe ich die wiederum nicht NET6-kompatibel, bin ich nass.

Thema: Bisherige Windowsapplikationen in Webservice oder Tablestumgebung laufen lassen
Am im Forum: Rund um die Programmierung

Tja, eine Sache gibt es bestimmt zu beachten, oder?
Wenn ich jetzt meine Appliaktionen / Projekte auf NET6 hebe, was mache ich dann mit DLL's die ich von Drittherstellern bisher benutze?
Die müssen dann auch dem NET6 genugtun (kompatibel sein). Da fängt dann bestimmt auch schon wieder ein Kampf an, oder ist das einfach zu lösen?

Thema: Bisherige Windowsapplikationen in Webservice oder Tablestumgebung laufen lassen
Am im Forum: Rund um die Programmierung

MAUI, habe ich schon mal gelesen, soll nun in VS2022 voll unterstützt werden.
Hast du damit schon was gemacht?

Thema: Bisherige Windowsapplikationen in Webservice oder Tablestumgebung laufen lassen
Am im Forum: Rund um die Programmierung

Hallo Forenmitglieder. Programmiere schon einige Jahre in C# (WPF). Nun ist es so, dass sich in unserer Firma ein immer gößerer Wandel vollzieht, sei es mit unseren Sytemen (ERP), Daten usw. die immer mehr in die Cloud gesetzt werden.
Nun soll ja auch der digitale Wandel bei uns in der Firma Einzug halten. Es soll auf Tablets gesetzt werden, Apple oder Android, Windows ...
Nun beschäftigt mich halt immer mehr die Frage, ob es auch eine andere Möglichkeit gibt, die bisherigen Applikationen zu verwenden oder leicht zu modifizieren, damit diese auf solchen Geräten laufen?
Es ist mir klar, das ich die Anwendungen auch komplett für Android oder Apple mit Xamarin umsetzen könnte, aber ich frage mich ob es noch eine andere Möglichkeit gibt?
Gibt es so etwas, das man diese Anwendungen irgendwo z.B. auf Azure laufen lässt, und man kann über die mobile Geräte sich da per Webverbindung aufschalten, somit braucht man das nicht auf den Geräten zu installieren? So etwas in die Richtung??
Das wäre vielleicht auch ein größerer Schutz vor Viren, Angriffe usw. ??

Hat jemand von euch damit Erfahrung, oder kann sagen was Sinn macht, was nicht?
Bin schon gespannt.

Thema: MS SQL Spaltenname mit case sensitivity
Am im Forum: Datentechnologien

Danke Abt für deinen Typ, das funktioniert (jedenfalls lokal, ob in der Firma auch muss ich noch checken).
Ist mir schon klar, mit Sonderzeichen usw. Aber das machen die auch nicht, weil denen ihr Programm eingentlich ein SQLITE-Datenfile ist, also haben die auch bestimmte Regeln.
Mir geht es darum, dass die Programme schnell und übersichtlich gefiltert, sortiert, verglichen werden können, deshalb diese Sache. Habe davor schon ohne diese Ooption die Programme verarbeitet, musste aber bei so einem Fall, wenn "Durchmesser-a" schon da war und dann noch "Durchmesser-A" in einem Programm vorhanden war, die Spalte mir einem Zähler versehen.
Aber so sollte das klappen.

Thema: MS SQL Spaltenname mit case sensitivity
Am im Forum: Datentechnologien

Danke Abt, dass du dir die Zeit nimmst und mir das anschaulich erklärst.
Du denkst jetzt da schon einen Schritt weiter, das da verschiedene Hersteller / Systeme von Maschinenherstellern angesprochen werden. Es geht hier bei mir aber nurm um einen Hersteller, da kommt sonst nichts rein, was sich vermischen kann. Es geht um einen schweizer Schleifmaschinenhersteller, der hat seine Schleifsoftware und von dieser lege ich nur Daten ab.
Ich weiss aber was du meinst, wenn verschiedene Hersteller hier in der DB drin wären , dann bräuchte ich eine Mappingtabelle, das die Parameter genau und eindeutig zu identifizieren sind. Ja, man könnte auch die Logik eventuelle für andere Systeme anpassen, ableiten (Vererben).

Also, bei den Daten die ich hier archiviere, ist der Parameter an allen Maschinen identisch.
Aber zu meiner Frage, kann man den Spaltennamen im Microsoft SQLserver nun so einstellen, das er "Durchmesser-A" und "Durchmesser-a" anlegen kann ??

Thema: MS SQL Spaltenname mit case sensitivity
Am im Forum: Datentechnologien

Hallo Abt, ja du weisst schon, es geht um Maschinenprogramme ;-).
Der Hersteller speichert dieses auch (in SQLITE, da geht es doch wohl auch...).
Ich muss die Programme über einen WebService ansprechen, kann die Daten dann abgreifen. Dann brösle ich das alles in seine Bestandteile auf und übertrage das in die Datenbank. Neue Tabellen, Spalten werden automatisch angelegt. Aber, wie ich dann trotzdem Spaltennamen die identische Zeichnen haben aber sich in Groß-Kleinschrift unterscheiden, verstehe ich nicht. Es ist wahrschleinlich deswegen, weil ich kein Informatikstudium gemacht habe.
Und ich dachte ich hatte auch mal etwas gelesen, das man diese Eigenheit beim SMS einstellen kann.
Also, wenn ich automtisch per Code eine neue Spalten anlegen lassen will, muss der SQL-Server / Datenbank unterscheiden zwischen "Durchmesser-A" und "Durchmesser-a".

Thema: MS SQL Spaltenname mit case sensitivity
Am im Forum: Datentechnologien

Hallo, danke für die Antwort.
Ich habe das gerade bei einer bestehenden lokalen Datenbank getestet. Habe die in den SingelUser geschaltet, und dann unter Options
die Collation in dem DropDown-Menu von Latin1_General_CI_AI auf Latin1_General_CS_AI gesetzt.

Davor hatte ich in einer Tabelle eine Spalte mit Durchmesser-a angelegt.
Nach der obigen Änderung habe ich nochmal versucht, in der Tabelle eine weitere Spalte mit Durchmesser-A anzulegen. Es kam dann die Fehlermeldung, das diese Spalte schon existiert.
Was ist falsch?

Thema: MS SQL Spaltenname mit case sensitivity
Am im Forum: Datentechnologien

Hallo liebe Community, stehe gerade vor folgendem Problem.
Ich muss Maschinendaten in eine SQL-Datenbank transferieren. Dabei ist mir aufgefallen, das der Hersteller manchmal Namen vergibt (Parameternamen welche dann als Spaltennamen benutzt werden) , die aus Buchstaben bestehen, aber einmal als "Durchmesser-a" und anderes mal als "Durchmesser-A" beschrieben werden. Beide Parameter haben eine andere Bedeutung, aber mit der aktuellen Einstellung kann ich die Spalte "Durchmesser-A" nicht anlegen, weil der SQL-Server motzt und sagt es gibt diese Spalte schon in der Tabelle "Durchmesser-a".
Deshalb meine frage, wo kann ich das einstellen. Habe schon im Netz dazu gesucht, aber ich finde nichts passendes.
Kann ich das überhaupt nachträglich ändern, oder muss das der komplette SQL-Server neu aufgesetzt werden?

Thema: Jegliche .NET DLL in dotnet core verwendbar?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Genau richtig, Maschinensteuerungen, die kauft man und da bleiben die stehen.
Aber: Du hast es korrekt gesagt. Wo es möglich ist, muss der "alte Scheiß raus".
Danke.

Thema: Jegliche .NET DLL in dotnet core verwendbar?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Ok, dann muss ich ran.
Dann muss ich auch damit leben das diese Appliaktion nicht mehr auf alten WINXP (wir haben noch Maschinen mit XP) nicht mehr unterstützt werden, da wird es dann keinen Ausweg geben.

Thema: Jegliche .NET DLL in dotnet core verwendbar?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Das mit Lego und Duplo ist ein gutes Besipiel.

Was mache ich dann, wenn ich eine Applikation habe, die aus mehreren Projekten besteht, alles sind soweit noch mit FW4.0 erstellt. Man kann (können schon, aber die Zeit !) ja nicht alle Projekte umschreiben, auf .Net5/6 usw.
Mir ging es eigentlich darum, wenn ich neue Features programmiere, die bisher in der Anwendung noch nicht vorhanden waren, diese in .Net5/6 zu programmieren, aber rückwirkend in der Hauptapplikation aufgerufen / verwendet werden kann.
Welche Möglichkeiten hat man? Gibt es da keine Brücke, das neue im vorhadnenen (alten) zu verwenden?

Mit verwenden meine ich als Besipiel:
- Es wird eine neue Anforderung gebraucht, die es bisher noch nicht gab. Die Anforderung (eine Datenauswertung) wird in einem neuen Projekt (damit zukunfsfähing in .Net5) erstellt.

==> kann ich dieses Projekt irgendwie in meinem alten "Hauptprojekt" einbinden, damit ich es dort aufrufen kann und die Verarbeitung dort ausgeführt wird?

Thema: Jegliche .NET DLL in dotnet core verwendbar?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Danke, mal sehen was ich bei mir umstellen kann. Hatte hier shcon mal was hilfreiches gefunden ...

https://www.youtube.com/watch?v=qc2WFaMfdp8

Thema: Jegliche .NET DLL in dotnet core verwendbar?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo, bei mir wäre noch eine andere Frage.
Seit Jahren erstelle ich WPF-Anwendungen mit .Net, vorzugsweise noch mit FW4.0.
Habe jetzt auch schon mal Anwendungen in NetCore geschrieben, um zu testen.
Kann ich aber rückwirkend eine NetCore-DLL mit neuer Anwendungsfunktionalität auch in ein .Net-Projekt einbinden (DLL) um dann die Methoden anzusprechen?
Habe das mal probiert, das einbinden geht, Klasse instanziieren auch, aber wenn ich die Applikation starte kommt die Meldung kommenzig Fehlermeldungen und in derFehlerausgabe heißt es der Namespace der NetCore-DLL kann nicht gefunden werden.

Heißt das das es für die Einbindung noch ein Trick gibt?

Thema: In Applikation alternativ 32-bit oder 64-bit DLL verwenden
Am im Forum: Rund um die Programmierung

Hallo, habe das nun soweit hingekriegt, vielen Dank an EUCH !!!
Es war noch ein Problem mit einem weiteren Projekt, das ich in der Solution eingebunden habe. Das Projekt ist in VisualBasic programmiert, das habe ich so gemacht, da ich die DLL' s der externen Firma nicht in C# einbinden konnte. Dazu sind die DLL's einmal mit 32 - und 64-Bit ausgezeichnet. Also hatte ich das alles in VB gemacht, mit den Funktionen die ich brauche und habe dann die erstellte DLL somit in meiner Hauptapplikatin verwendet. Das Problem war jetzt, das ich die 64-Bit-Version nun auch noch erstellen mußte, dazu waren Anpassungen notwendig, egal, habe ich gemacht und dann hatte ich eine DLL für 32- und 64-Bit, die ich nun verwende.
Meine Frage: Zuvor hatte ich in der Hauptapplikation dieses VisualBasic-Applikation als "Projekt" eingebunden.
Gibt eigentlich eine Möglichkeit, das man immer noch das Projekt einbindet, und beim Erstellen werden in der VisualBasicapplikation auch die korrekt bittigen DLL's gezogen?

Das Hauptproblem das ich noch habe ist aber Excel. Ich lese in einem Projekt auch Exceldateien ein ("XLS"-Format, nicht "XLSX"). Da benutze ich die "Interop"-DLL und dazu noch die "Microsoft.Jet.OLEDB.4.0". Da motzt das System bei x64.
Wie kann ich das machen, das es auf x86 und x64 läuft? Das Excelgedöns mit "NPOI" erschlagen ?? Oder gibt es da auch etwas für MSBuild mit "Referenz" ? Das was ich im Nezt gesehen habe, war mit Registrierungen über regsvr32 dieverser DLL's, aber ich kann nicht an zig Rechnern durchgehen und das Zeugs registrieren, das muss pragmatischer laufen.
Hat jemand eine Idee?

Thema: In Applikation alternativ 32-bit oder 64-bit DLL verwenden
Am im Forum: Rund um die Programmierung

Habe das mal probiert, aber ich denke ich bin zu doof dafür, aber es war dann doch noch ein Erfolg zu verzeichnen.

Habe eine Konsolenanwerndung in mit FW4.0 als WPF erstellt.
Habe im Projektverzeichnis zwei Ordner (x86 und x64) angelegt, habe jeweils die beiden DLL's da abgelegt.
Die Projektkonfiguratin hat nur x86 und x64.

Habe die Applikation erstellen lassen, ohne eine Zeile Code eingefügt zu haben.

Was zeigt mir die CSPROJ ? Es ist plötzlich was mit AMD64 drin, hui:


<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProjectGuid>{539E4982-E159-4FDD-99AB-E1666BC0B1CE}</ProjectGuid>
    <OutputType>Exe</OutputType>
    <RootNamespace>ConsoleAppDlltest</RootNamespace>
    <AssemblyName>ConsoleAppDlltest</AssemblyName>
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <Deterministic>true</Deterministic>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
    <PlatformTarget>x64</PlatformTarget>
    <OutputPath>bin\x64\Debug\</OutputPath>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
    <PlatformTarget>x64</PlatformTarget>
    <OutputPath>bin\x64\Release\</OutputPath>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
    <PlatformTarget>x86</PlatformTarget>
    <OutputPath>bin\x86\Debug\</OutputPath>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
    <PlatformTarget>x86</PlatformTarget>
    <OutputPath>bin\x86\Release\</OutputPath>
  </PropertyGroup>
  
  <ItemGroup>
    <Reference Include="sapnco, Version=3.0.0.42, Culture=neutral, PublicKeyToken=50436dca5c7f7d23, processorArchitecture=AMD64">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>..\..\..\DLLS\SapZeichnungen\x64\sapnco.dll</HintPath>
    </Reference>
    <Reference Include="sapnco_utils, Version=3.0.0.42, Culture=neutral, PublicKeyToken=50436dca5c7f7d23, processorArchitecture=AMD64">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>..\..\..\DLLS\SapZeichnungen\x64\sapnco_utils.dll</HintPath>
    </Reference>
    <Reference Include="System" />
    <Reference Include="System.Core" />
    <Reference Include="System.Xml.Linq" />
    <Reference Include="System.Data.DataSetExtensions" />
    <Reference Include="Microsoft.CSharp" />
    <Reference Include="System.Data" />
    <Reference Include="System.Xml" />
  </ItemGroup>
  
  
  <ItemGroup>
    <Compile Include="Program.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
  </ItemGroup>
  <ItemGroup>
    <Content Include="x64\sapnco.dll">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
    <Content Include="x64\sapnco_utils.dll">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
    <Content Include="x86\sapnco.dll">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
    <Content Include="x86\sapnco_utils.dll">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
  </ItemGroup>
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>


Zuerst hatte ich gedacht es geht immer noch nicht, habe es dann aber nochmal probiert, und die beiden <Reference> mtit "AMD64" in die CSPROJ vom anderen Projekt eingbaut, dann nochmal eingebaut für "x86", siehe:


  <ItemGroup Condition="'$(Platform)' == 'x64' ">
    <Reference Include="sapnco, Version=3.0.0.42, Culture=neutral, PublicKeyToken=50436dca5c7f7d23, processorArchitecture=AMD64">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>..\..\..\DLLS\SapZeichnungen\x64\sapnco.dll</HintPath>
    </Reference>
    <Reference Include="sapnco_utils, Version=3.0.0.42, Culture=neutral, PublicKeyToken=50436dca5c7f7d23, processorArchitecture=AMD64">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>..\..\..\DLLS\SapZeichnungen\x64\sapnco_utils.dll</HintPath>
    </Reference>
  </ItemGroup>
  <ItemGroup Condition=" '$(Platform)' == 'x86' ">
    <Reference Include="sapnco, Version=3.0.0.42, Culture=neutral, PublicKeyToken=50436dca5c7f7d23, processorArchitecture=x86">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>..\..\..\DLLS\SapZeichnungen\x86\sapnco.dll</HintPath>
    </Reference>
    <Reference Include="sapnco_utils, Version=3.0.0.42, Culture=neutral, PublicKeyToken=50436dca5c7f7d23, processorArchitecture=x86">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>..\..\..\DLLS\SapZeichnungen\x86\sapnco_utils.dll</HintPath>
    </Reference>
  </ItemGroup>

Dann hat es auch nun funktioniert. Was ich noch teste ich, wenn die DLL's nur verlinkt sind.
Was komisch ist:
-Warum steht jetzt bei Prozessorarchitektur plötzlich AMD64 ??

Ich werde da noch etwas sran herumspielen, mit Einbindung weiterer Projekte in die Projektmappe.

Eine , zwei weitere Fragen die mich jetzt gerade noch nachdenklich machen: Was passiert, wenn ich ein anderes Projekt oder eine andere Projekt-DLL in dieses Projekt aufnehme, das komplett in C# und nur mit Net-DLL's arbeitet (also keine Net. C++-Dll's)? Muss ich diese Projekt aomit auch mit x86 und x64 - Konfiguration ausstatten, damit alles funktioniert?

Wenn ich umgekehrt jetzt diese DLL mit den Net. C++-Dll's in einem anderen Projekt verwenden, muss ich das andere Projekt auch für x86 und x64 konfigurieren.
Das bedeutet, kein ANYCPU in projekten verwenden, sobald wie hier Net. C++-Dll's mit 64Bit verwendet werden, ist das korrekt?

Thema: In Applikation alternativ 32-bit oder 64-bit DLL verwenden
Am im Forum: Rund um die Programmierung

Hallo. Ja, das ganze hat sich echt verwurschtelt.
Bis jetzt konnte das erst mal so laufen. Aber nach und nach leuchten so die die Dinge auf, hatte damit auch vorher noch keine Berührung.
Und das mit den Net. C++ DLL's das diese anders zu behandeln sind, ja, muss man wissen. Aber dann geht es erst mal immer noch nicht (bei mir, aber denke das liegt an mir).
Ich würde das ganze schon gerne richtig verstehen, ich denke ich bin da auch schon näher dran.

Punkt 1:
- Die DLL's (in meinem Fall Net. C++-Dll's ins Projekt in differenzierte Ordner ablegen. Mit Differennziert meine ich, im Projektmappenexplorer zwei Verzeichnisse anlegen, klassischerweise mit x86 und x64 (hat den Vorteil das man später mit den Conditions vonMSBuild zu arbeiten). Die DLL's darin ablegen (in der Regel haben die auch den identischen Namen)

Punkt 2:
- Handelt es sich wie in meinem Fall um die Net. C++ - DLL / DLL's, dann muss das Projekt in der Konfiguration für x86 und x64 ausgerichtet werden (einstellen), indiesem Fall auch "AnyCPU" entfernen

Punkt 3:
- Es muss die CSPROJ-Datei vom Projekt (Hauptprojekt) angepasst werden, mit den MSBUILD-Conditions. Ich denke hier liegt jetzt das Problem, ich schreibe auch hier erst mal nicht mehr dazu, bevor das Problem gelöst ist. Wenn das bei mir funktioniert, werde ich den Prozess mal genau beschreiben, falls auch noch andere so dappig wie ich sind


Habe das mal bis Punkt 3 beschrieben. In der CSPROJ die ich editiert habe, kann ich mir nicht erklären was genau falsch laufen soll. Ich habe zusätzlich zwei <ItemGroup> angelegt, in denen ich die Plattformeinstellung kontrolliere, dementsprechen sollen die DLL's gezogen werden.

Wenn ich aber das Projekt starte, in der VStudiooberfäche x86 oder x64 einstellen, dann bringt die Umgebung viele Fehler "Typ ooder Namespace "SAP" wurde nicht gefunden, und in der Datei sind sämtliche Klassen, Eigenschaften rot unterkringelt, und in der Fehlerliste wird ausgegeben das eine using-Direktive oder der Assemblyverweis fehlt.

Was mir noch aufgefallen ist:
- Warum steht in der CSPROJ ganz oben noch ein Eintrag mit "AnyCPU", die habe ich entfernt, das kann nur noch bei der "Zielplattform" in Projekt-Eigenschaften-Build eingestellt werden.
- In den beiden <ItemGroup> habe ich keine Condition für DEBUG oder RELEASE, habe es aber mit und ohne die Zusätzliche Condition geändert, macht keinen Unterschied.

So, jetzt habe ich eine Menge geschrieben, evenntuell kann das Problem analysiert werden ...

Also ich sehe jetzt den Fehler vorerst nicht, was ich falsch gesetzt habe. Ich stelle hier nochmal die CSPROJ ein:


<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProjectGuid>{8CBB9BA6-BCF3-476A-BDBA-005913EA9A0E}</ProjectGuid>
    <OutputType>WinExe</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>SapZeichnungsViewer</RootNamespace>
    <AssemblyName>SapZeichnungsViewer</AssemblyName>
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <Deterministic>true</Deterministic>
    <TargetFrameworkProfile>
    </TargetFrameworkProfile>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
    <DebugSymbols>true</DebugSymbols>
    <OutputPath>bin\x86\Debug\</OutputPath>
    <DefineConstants>
    </DefineConstants>
    <DebugType>full</DebugType>
    <PlatformTarget>x86</PlatformTarget>
    <LangVersion>7.3</LangVersion>
    <ErrorReport>prompt</ErrorReport>
    <NoWarn>0168</NoWarn>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
    <OutputPath>bin\x86\Release\</OutputPath>
    <DefineConstants>
    </DefineConstants>
    <Optimize>false</Optimize>
    <DebugType>pdbonly</DebugType>
    <PlatformTarget>x86</PlatformTarget>
    <LangVersion>7.3</LangVersion>
    <ErrorReport>prompt</ErrorReport>
  </PropertyGroup>
  <PropertyGroup>
    <StartupObject>
    </StartupObject>
  </PropertyGroup>
  <PropertyGroup />
  <PropertyGroup>
    <SignAssembly>false</SignAssembly>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
    <PlatformTarget>x86</PlatformTarget>
    <OutputPath>bin\x64\Debug\</OutputPath>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
    <PlatformTarget>x64</PlatformTarget>
    <OutputPath>bin\x64\Release\</OutputPath>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="PresentationCore" />
    <Reference Include="PresentationFramework" />
    <Reference Include="System" />
    <Reference Include="System.Configuration" />
    <Reference Include="System.Core" />
    <Reference Include="System.Web.Extensions" />
    <Reference Include="System.Xaml" />
    <Reference Include="System.Xml.Linq" />
    <Reference Include="System.Data.DataSetExtensions" />
    <Reference Include="Microsoft.CSharp" />
    <Reference Include="System.Data" />
    <Reference Include="System.Xml" />
    <Reference Include="WindowsBase" />
  </ItemGroup>
  <ItemGroup>
    <Compile Include="MainWindow.xaml.cs">
      <DependentUpon>MainWindow.xaml</DependentUpon>
    </Compile>
    <Compile Include="Properties\AssemblyInfo.cs" />
    <Compile Include="Zusatzklassen\ECCDestinationConfig.cs" />
    <Compile Include="Zusatzklassen\SAPFunctions.cs" />
    <Compile Include="SapViewerMethods.cs" />
    <Compile Include="Zusatzklassen\Tools.cs" />
    <Compile Include="Zusatzklassen\ViewFiles.cs" />
  </ItemGroup>
  <ItemGroup>
    <PackageReference Include="PDFsharp-MigraDoc-GDI">
      <Version>1.51.5186-beta</Version>
    </PackageReference>
    <PackageReference Include="System.ValueTuple">
      <Version>4.5.0</Version>
    </PackageReference>
  </ItemGroup>
  
  <!-- Start - eingefügte ItemGroups -->
  
  <ItemGroup Condition="'$(Platform)' == 'x64'">
    <Content Include="Zusatzklassen\x64\sapnco.dll">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
    <Content Include="Zusatzklassen\x64\sapnco_utils.dll">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
  </ItemGroup>
  <ItemGroup Condition=" '$(Platform)' == 'x86'">
    <Content Include="Zusatzklassen\x86\sapnco.dll">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
    <Content Include="Zusatzklassen\x86\sapnco_utils.dll">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
  </ItemGroup>
  <ItemGroup>
    <Content Include="App.config">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
  </ItemGroup>
  
  <!-- Ende - eingefügte ItemGroups -->
  
  <!-- <ItemGroup> -->
  <!-- <Content Include="App.config"> -->
  <!-- <CopyToOutputDirectory>Always</CopyToOutputDirectory> -->
  <!-- </Content> -->
  <!-- <Content Include="Zusatzklassen\x64\sapnco.dll"> -->
  <!-- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> -->
  <!-- </Content> -->
  <!-- <Content Include="Zusatzklassen\x64\sapnco_utils.dll"> -->
  <!-- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> -->
  <!-- </Content> -->
  <!-- <Content Include="Zusatzklassen\x86\sapnco.dll"> -->
  <!-- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> -->
  <!-- </Content> -->
  <!-- <Content Include="Zusatzklassen\x86\sapnco_utils.dll"> -->
  <!-- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> -->
  <!-- </Content> -->
  <!-- </ItemGroup> -->
  
  
  <ItemGroup>
    <Page Include="MainWindow.xaml">
      <SubType>Designer</SubType>
      <Generator>MSBuild:Compile</Generator>
    </Page>
  </ItemGroup>
  <ItemGroup>
    <None Include="Doc-SapZeichnungsViewer.docx" />
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\AdditionalFuncs\AdditionalFuncs.csproj">
      <Project>{86b31f9e-ef5b-46b0-8559-b4a5043dffd3}</Project>
      <Name>AdditionalFuncs</Name>
    </ProjectReference>
  </ItemGroup>
  <ItemGroup />
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

Thema: In Applikation alternativ 32-bit oder 64-bit DLL verwenden
Am im Forum: Rund um die Programmierung

Also, ohne groß auszuholen.
Ich habe versucht das in der CSPROJ einzubinden, das bei unterschiedlicher Prozessorarchitektur (x86/x64).

Schritt 1:
Habe dem Projekt bei den Verweisen die beiden DLL's als x64 eingebunden.
Dann habe das Projekt gestartet, einmal als "AnyCPU" und einmal als "x64" laufen lassen.
Beides mal hat es funktioniert.

Habe ich "x86" angewählt,dann ging es nicht.

Aktueller Aufbau der "CSPROJ":


<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProjectGuid>{8CBB9BA6-BCF3-476A-BDBA-005913EA9A0E}</ProjectGuid>
    <OutputType>WinExe</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>SapZeichnungsViewer</RootNamespace>
    <AssemblyName>SapZeichnungsViewer</AssemblyName>
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <Deterministic>true</Deterministic>
    <TargetFrameworkProfile>
    </TargetFrameworkProfile>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
    <DebugSymbols>true</DebugSymbols>
    <OutputPath>bin\x86\Debug\</OutputPath>
    <DefineConstants>
    </DefineConstants>
    <DebugType>full</DebugType>
    <PlatformTarget>x86</PlatformTarget>
    <LangVersion>7.3</LangVersion>
    <ErrorReport>prompt</ErrorReport>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
    <OutputPath>bin\x86\Release\</OutputPath>
    <DefineConstants>
    </DefineConstants>
    <Optimize>false</Optimize>
    <DebugType>pdbonly</DebugType>
    <PlatformTarget>x86</PlatformTarget>
    <LangVersion>7.3</LangVersion>
    <ErrorReport>prompt</ErrorReport>
  </PropertyGroup>
  <PropertyGroup>
    <StartupObject>SapZeichnungsViewer.App</StartupObject>
  </PropertyGroup>
  <PropertyGroup />
  <PropertyGroup>
    <SignAssembly>false</SignAssembly>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
    <DebugSymbols>true</DebugSymbols>
    <OutputPath>bin\AnyCPU\Debug\</OutputPath>
    <DebugType>full</DebugType>
    <PlatformTarget>AnyCPU</PlatformTarget>
    <LangVersion>7.3</LangVersion>
    <ErrorReport>prompt</ErrorReport>
    <NoWarn>0168</NoWarn>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|AnyCPU'">
    <OutputPath>bin\AnyCPU\Release\</OutputPath>
    <DebugType>pdbonly</DebugType>
    <PlatformTarget>AnyCPU</PlatformTarget>
    <LangVersion>7.3</LangVersion>
    <ErrorReport>prompt</ErrorReport>
  </PropertyGroup>
  <PropertyGroup>
    <NoWin32Manifest>true</NoWin32Manifest>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="PresentationCore" />
    <Reference Include="PresentationFramework" />
    <Reference Include="sapnco">
      <HintPath>..\..\..\DLLS\SapZeichnungen\x64\sapnco.dll</HintPath>
    </Reference>
    <Reference Include="sapnco_utils">
      <HintPath>..\..\..\DLLS\SapZeichnungen\x64\sapnco_utils.dll</HintPath>
    </Reference>
    <Reference Include="System" />
    <Reference Include="System.Configuration" />
    <Reference Include="System.Core" />
    <Reference Include="System.Web.Extensions" />
    <Reference Include="System.Xaml" />
    <Reference Include="System.Xml.Linq" />
    <Reference Include="System.Data.DataSetExtensions" />
    <Reference Include="Microsoft.CSharp" />
    <Reference Include="System.Data" />
    <Reference Include="System.Xml" />
    <Reference Include="WindowsBase" />
  </ItemGroup>
  <ItemGroup>
    <Compile Include="App.xaml.cs">
      <DependentUpon>App.xaml</DependentUpon>
    </Compile>
    <Compile Include="MainWindow.xaml.cs">
      <DependentUpon>MainWindow.xaml</DependentUpon>
    </Compile>
    <Compile Include="Properties\AssemblyInfo.cs" />
    <Compile Include="Zusatzklassen\ECCDestinationConfig.cs" />
    <Compile Include="Zusatzklassen\SAPFunctions.cs" />
    <Compile Include="SapViewerMethods.cs" />
    <Compile Include="Zusatzklassen\Tools.cs" />
    <Compile Include="Zusatzklassen\ViewFiles.cs" />
  </ItemGroup>
  <ItemGroup>
    <PackageReference Include="PDFsharp-MigraDoc-GDI">
      <Version>1.51.5186-beta</Version>
    </PackageReference>
    <PackageReference Include="System.ValueTuple">
      <Version>4.5.0</Version>
    </PackageReference>
  </ItemGroup>
  <ItemGroup>
    <Content Include="App.config">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
  </ItemGroup>
  <ItemGroup>
    <ApplicationDefinition Include="App.xaml">
      <Generator>MSBuild:Compile</Generator>
      <SubType>Designer</SubType>
    </ApplicationDefinition>
    <Page Include="MainWindow.xaml">
      <SubType>Designer</SubType>
      <Generator>MSBuild:Compile</Generator>
    </Page>
  </ItemGroup>
  <ItemGroup>
    <None Include="Doc-SapZeichnungsViewer.docx" />
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\AdditionalFuncs\AdditionalFuncs.csproj">
      <Project>{86b31f9e-ef5b-46b0-8559-b4a5043dffd3}</Project>
      <Name>AdditionalFuncs</Name>
    </ProjectReference>
  </ItemGroup>
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

Schritt 2:
Ich habe die "CSPROJ" abgeändert, damit auch die "32-Bit"-Variante passen soll. Aber macht eigentlich keinen Sinn wenn das "managed" ist.
Bei den Verweisen habe ich nichts verändert.
"x64 / AnyCPU" läuft, aber "x86" nicht, Fehlermeldung liegt bei.

Hier die abgeänderte CSPROJ-Datei (neuer Teil ist gekennzeichnet):

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProjectGuid>{8CBB9BA6-BCF3-476A-BDBA-005913EA9A0E}</ProjectGuid>
    <OutputType>WinExe</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>SapZeichnungsViewer</RootNamespace>
    <AssemblyName>SapZeichnungsViewer</AssemblyName>
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <Deterministic>true</Deterministic>
    <TargetFrameworkProfile>
    </TargetFrameworkProfile>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
    <DebugSymbols>true</DebugSymbols>
    <OutputPath>bin\x86\Debug\</OutputPath>
    <DefineConstants>
    </DefineConstants>
    <DebugType>full</DebugType>
    <PlatformTarget>x86</PlatformTarget>
    <LangVersion>7.3</LangVersion>
    <ErrorReport>prompt</ErrorReport>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
    <OutputPath>bin\x86\Release\</OutputPath>
    <DefineConstants>
    </DefineConstants>
    <Optimize>false</Optimize>
    <DebugType>pdbonly</DebugType>
    <PlatformTarget>x86</PlatformTarget>
    <LangVersion>7.3</LangVersion>
    <ErrorReport>prompt</ErrorReport>
  </PropertyGroup>
  <PropertyGroup>
    <StartupObject>SapZeichnungsViewer.App</StartupObject>
  </PropertyGroup>
  <PropertyGroup />
  <PropertyGroup>
    <SignAssembly>false</SignAssembly>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
    <DebugSymbols>true</DebugSymbols>
    <OutputPath>bin\AnyCPU\Debug\</OutputPath>
    <DebugType>full</DebugType>
    <PlatformTarget>AnyCPU</PlatformTarget>
    <LangVersion>7.3</LangVersion>
    <ErrorReport>prompt</ErrorReport>
    <NoWarn>0168</NoWarn>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|AnyCPU'">
    <OutputPath>bin\AnyCPU\Release\</OutputPath>
    <DebugType>pdbonly</DebugType>
    <PlatformTarget>AnyCPU</PlatformTarget>
    <LangVersion>7.3</LangVersion>
    <ErrorReport>prompt</ErrorReport>
  </PropertyGroup>
  <PropertyGroup>
    <NoWin32Manifest>true</NoWin32Manifest>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="PresentationCore" />
    <Reference Include="PresentationFramework" />
    <Reference Include="sapnco">
      <HintPath>..\..\..\DLLS\SapZeichnungen\x64\sapnco.dll</HintPath>
    </Reference>
    <Reference Include="sapnco_utils">
      <HintPath>..\..\..\DLLS\SapZeichnungen\x64\sapnco_utils.dll</HintPath>
    </Reference>
	
	<!-- START - Neu eingstellt -->
	
	<Reference Include="sapnco, version=3.0.0.42, culture=neutral, publickeytoken=50436dca5c7f7d23, processorarchitecture=x64">
      <HintPath>..\..\..\DLLS\SapZeichnungen\x64\sapnco.dll</HintPath>
    </Reference>
    <Reference Include="sapnco_utils, version=3.0.0.42, culture=neutral, publickeytoken=50436dca5c7f7d23, processorarchitecture=x64">
      <HintPath>..\..\..\DLLS\SapZeichnungen\x64\sapnco_utils.dll</HintPath>
    </Reference>
	
	<!-- ENDE - Neu eingstellt -->
	
	<Reference Include="sapnco">
      <HintPath>..\..\..\DLLS\SapZeichnungen\x64\sapnco.dll</HintPath>
    </Reference>
    <Reference Include="sapnco_utils">
      <HintPath>..\..\..\DLLS\SapZeichnungen\x64\sapnco_utils.dll</HintPath>
    </Reference>
	
	
    <Reference Include="System" />
    <Reference Include="System.Configuration" />
    <Reference Include="System.Core" />
    <Reference Include="System.Web.Extensions" />
    <Reference Include="System.Xaml" />
    <Reference Include="System.Xml.Linq" />
    <Reference Include="System.Data.DataSetExtensions" />
    <Reference Include="Microsoft.CSharp" />
    <Reference Include="System.Data" />
    <Reference Include="System.Xml" />
    <Reference Include="WindowsBase" />
  </ItemGroup>
  <ItemGroup>
    <Compile Include="App.xaml.cs">
      <DependentUpon>App.xaml</DependentUpon>
    </Compile>
    <Compile Include="MainWindow.xaml.cs">
      <DependentUpon>MainWindow.xaml</DependentUpon>
    </Compile>
    <Compile Include="Properties\AssemblyInfo.cs" />
    <Compile Include="Zusatzklassen\ECCDestinationConfig.cs" />
    <Compile Include="Zusatzklassen\SAPFunctions.cs" />
    <Compile Include="SapViewerMethods.cs" />
    <Compile Include="Zusatzklassen\Tools.cs" />
    <Compile Include="Zusatzklassen\ViewFiles.cs" />
  </ItemGroup>
  <ItemGroup>
    <PackageReference Include="PDFsharp-MigraDoc-GDI">
      <Version>1.51.5186-beta</Version>
    </PackageReference>
    <PackageReference Include="System.ValueTuple">
      <Version>4.5.0</Version>
    </PackageReference>
  </ItemGroup>
  <ItemGroup>
    <Content Include="App.config">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
  </ItemGroup>
  <ItemGroup>
    <ApplicationDefinition Include="App.xaml">
      <Generator>MSBuild:Compile</Generator>
      <SubType>Designer</SubType>
    </ApplicationDefinition>
    <Page Include="MainWindow.xaml">
      <SubType>Designer</SubType>
      <Generator>MSBuild:Compile</Generator>
    </Page>
  </ItemGroup>
  <ItemGroup>
    <None Include="Doc-SapZeichnungsViewer.docx" />
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\AdditionalFuncs\AdditionalFuncs.csproj">
      <Project>{86b31f9e-ef5b-46b0-8559-b4a5043dffd3}</Project>
      <Name>AdditionalFuncs</Name>
    </ProjectReference>
  </ItemGroup>
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

Hilft das weiter?
Kann das Problem sein:
- Muss ich was in der PropertyGroup machen, anstatt in der ItemGroup ??
- Muss ich bei den Verweisen was anders machen ??
- Muss ich eigentlich nur "AnyCPU" verwenden, oder geht das nicht weil die beiden DLL's eventuell C++-DLL's sind ??

Kann ich sonst noch eine Info geben??

Thema: In Applikation alternativ 32-bit oder 64-bit DLL verwenden
Am im Forum: Rund um die Programmierung

Hallo gfoidl, habe mir das geerade runtergeladen und angesehen.
Die beiden DLL's sind ja managed, aber wie du sagst wohl in C++. Das heißt ic nehme die "NetFull"-Variante (hbe FW 4.0 in Verwendung), oder egal, das unterstützt noch alle Frameworks, korrekt?
Ich binde die beiden DLL's ein und mache in der App.xamls.cs die Auswertung auf 32- oder 64-Bit, dazu wir dann die statische Klasse "NativLib" aufgerufen.
In der Klasse definiere ich die DLL doer mehrere DLL's mit der/den Variablennamen denen ich DLL-Namen zuweise.

Wenn ich mehrere DLL's habe, muss ich noch jede DLL anlegen oder wie nennt man das:
==> [DllImport(LibName, EntryPoint = "getBitnessMessage")]

Korrekt?

Ansonsten muss ich im Code nichts machen, alles bleibt wie es war?

Thema: In Applikation alternativ 32-bit oder 64-bit DLL verwenden
Am im Forum: Rund um die Programmierung

Hui, das hört sich ja fast noch komplizierter an als das in der CSPROJ-Datei einzutüteln ...
Ist das wirklich einfacher? das habe ich so noch nie gemacht (P/Invoke).
Bleibt im Code auch alles gleich bei beiden Vesionen (x86 oder x64, aber du sagtest ja "AnyCPU" verwenden). Wie rufe ich dann von den DLL's die Methoden auf?
Und wie mache ich das, wenn das Projekt mit ClickOnce veröffentlicht wird. Muss ich dann alle DLL's mit den diversen Bittigkeiten in das Projekt verlinken oder zufügen ?

Dann noch eine Frage. Habe ein Bild von einem der beien DLL-typen gemacht (x86/x64). Wenn ich das richtig verstehe, dann ist das managed DLL, korrekt?
Das heißt dann, das müßte ohen das ganze von oben beschrieben funktionieren?

Thema: In Applikation alternativ 32-bit oder 64-bit DLL verwenden
Am im Forum: Rund um die Programmierung

Hallo gfoidl, genau um das geht es.
Wie mache ich das Projekt auf x86 und x64 lauffähig, wenn es die einzubindenden DLL's als 32- und 64-Bit gibt. Applikation soll auf 32- und 64Bit Betriebsystem laufen, ohne zwei Projekt fahren zu müssen.
Danke.