Vítejte na blog.vyvojar.cz Přihlásit | Registrovat | Pomoc
Titulní Blogy Fotky Soubory

Pragmatik

Vezmu to zkratkou. Je to sice dál, ale zato horší cesta.

VS2010 a ladění externě spouštěných dll knihoven

Potřeboval jsem opravit jeden bug ve starším projektu, dělaném ješte v .NET 2.0. Jedná se o dll knihovnu s COM rozhraním, která je volána z Excelu. V projektu mám už od dob VS2005 nastavenu záložku Debug takto:

  • Start external program: C:\Program Files\Microsoft Office\Office12\EXCEL.EXE
  • Command line arguments: C:\Projekty\Pragmatik\Pragmatik.xla

Pragmatik.xla je soubor typu “Doplněk aplikace MS Excel” a obsahuje v podstatě jen makro, které zavolá Pragmatik.DLL, vytvoří z ní instanci hlavního objektu aplikace Pragmatik a předá jí odkaz na Excel, aby tato aplikace mohla Excel ovládat. Veškerý další kód Pragmatiku je už v té DLL knihovně a s výše uvedeným nastavením se dal vždy bez problémů debugovat.

Po přechodu na VS2010 jsem však zjistil, že aplikace se v debug modu sice spustí a funguje, ale nezastavuje se na Breakpointech. Nebudu zbytečně popisovat, co vše jsem marně zkusil, nabídnu rovnou vysvětlení a řešení, které jsem našel na Visual Studio Debugger Team Blog

Ve stručnosti jde o to, že pokud DLL knihovnu psanou v .NET 2.0 nebo 3.5 spouštíme pomocí externího EXE, nepozná VS2010 spávně cílový framework a použije debug engine z .NET 4.0. A ten pak nedebuguje. Řešením je udělat pro spouštěcí exe program extra konfigurační soubor a v něm explicitně určit, jaká verze frameworku se má pro debugování použít.

V mém případě stačilo udělat soubor Excel.exe.config a do něj napsat:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup>
    <supportedRuntime version="v2.0.50727" />
  </startup>
</configuration>

Netýká se to zdaleka jen Excelu, tak se to třeba bude někomu hodit…

Zveřejněno 16. června 2010 22:20 by tomas.berny

Upozornění na nové komentáře

Pokud chčeš dostávat upozornění emailem na změny u toho příspěvku,tak se zaregistruj zde.zde

Odebírat komentáře k tomuto příspěvku pomocí RSS

Komentář

Žádné komentáře

Vytvoření nového komentáře

(povinný) 
(nepovinný)
(povinný) 
Opiš čísla, která vidíš na obrázku:
Odeslat
Powered by Community Server (Personal Edition), by Telligent Systems