AutoCAD 2011 – Pluginhandling beim verwenden von XAML mit Value-Binding

Hallo,

ich hatte mal wieder ein Problem:

Bei Laufzeittest eines AutoCAD-Plugin, welches XAML mit MVVM – ValueBinding verwendet meckerte AutoCAD immer rum:
“Kann die Assembly nicht finden…”.

Nach einigem suchen fand ich die Lösung:
Das XAML wird zur Laufzeit im Kontext der Applikation(acad.exe) gerändert.
Die in der XAML verlinkten Assemblies:

...
xmlns:ns_commands="clr-namespace:a.b.MVVM.Commands;assembly=MVVM_Tools"
xmlns:ns_viewclose="clr-namespace:a.b.MVVM.View;assembly=MVVM_Tools"
...

müssen sich in dem GAC,oder in dem acad.exe-Pfad befinden, sonst werden sie nicht gefunden.

Eine weitere Alternative ist es die verwendeten Assemblies(Dlls) in ein Unterverzeichnis
des Plugin-Verzeichnises von AutoCAD z.B.: (C:\ACAD2011\plugins\meineDlls) zu legen und diesen
Pfad in die acad.exe.config einzutragen

<configuration>
	<configSections>
		<section name="microsoft.web.services2" type="Microsoft.Web.Services2.Configuration.WebServicesConfiguration,
		Microsoft.Web.Services2, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
	</configSections>
	<startup>
		<!--
		We always use the latest version of the framework installed on the computer.
		If you are having problems then explicitly specify .NET 2.0 by uncommenting the following line.
		<supportedRuntime version="v2.0.50727"/>
		-->
	</startup>
	<microsoft.web.services2>
		<messaging>
			<maxRequestLength>51200</maxRequestLength>
		</messaging>
	</microsoft.web.services2>
	<runtime>
		<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
			<probing privatePath="Fdo\bin;Plugins\Workflow\Activities;<strong>Plugins\meineDlls</strong>"/>
		</assemblyBinding>
	</runtime>
</configuration>

Dies mache ich mit folgendem kleinem Programm
acad.exe.config-Manipulator
Die Benutzung ist relativ einfach:

...\InstallPlugInVerzx64 oder x86
InstallPlugInVerz[x64/x86] [+/-] [pathToPlugIn] [ACAD.exe-Path]
[+/-] required (+ install / - uninstall)
[pathToPlugIn] required (the Path to Plugindir at ACAD.exe-Path)
[ACAD.exe-Path] required (the Path to acad.exe - File)

Ausgeführt wird das Programm während der Installation, bzw der Deinstallation.
Die Setupdateien erzeuge ich mit Innosetup (doch hierzu später mehr)

Dieser Beitrag wurde unter C# abgelegt und mit , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *


*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>