Ticket #332: ref-expando.patch
File ref-expando.patch, 24.6 KB (added by hopscc, 11 years ago) |
---|
-
Source/BackEndClr/ScanClrType.cobra
24 24 throw LoadReferenceException('FileNotFound', fnfe.fileName, fnfe.message) 25 25 catch fle as System.IO.FileLoadException 26 26 throw LoadReferenceException('FileLoadException', fle.fileName ? reference, fle.message) 27 27 28 28 def _clrLoadReference(reference as String) as String? 29 29 """ 30 30 uses compiler .referenceVerbosity, _willReadDependencies … … 40 40 rv = .referenceVerbosity 41 41 assert not (reference.startsWith('-r') and '-r' in reference[2:]) 42 42 couldNotFindMsg = 'Could not find file.' 43 if File.exists(reference) 44 # try current directory 45 if rv, print '"[reference]" found as file. Will _loadAssemblyFileNamed().' 46 referredAss = _loadAssemblyFileNamed(reference) 47 if rv, print '_loadAssemblyFileNamed() returned: [CobraCore.toTechString(referredAss)]' 48 else 49 # TODO: the problem with -lib: in both Cobra and C# is that it has no effect on runtime, 50 # you must still register the DLLs in the GAC or copy them into the same dir as the .exe 51 # because the -lib: paths are not passed into executable. 52 # So should Cobra copy the .dll's into the target directory (if their paths are not in MONO_PATH)? 53 if rv, print 'File does not exist.' 54 searchPaths = .options.getDefault('library-directory', List<of String>()) to List<of String> 55 found = false 56 for searchPath in searchPaths 57 if rv, print 'Checking lib path: "[searchPath]"' 58 combinedPath = Path.combine(searchPath, reference) 59 if File.exists(combinedPath) 60 if rv, print '"[reference]" found as file. Will _loadAssemblyFileNamed().' 61 referredAss = _loadAssemblyFileNamed(combinedPath) 62 if rv, print '_loadAssemblyFileNamed() returned: [CobraCore.toTechString(referredAss)]' 63 found = true 64 break 65 if rv 66 if searchPaths.count 67 if not found, print 'Did not find "[reference]" in lib paths' 68 else 69 print 'No lib paths to search.' 70 if not found and not reference.hasSlash 71 # try system wide (GAC) 72 if reference.endsWith('.dll'), reference = reference[:-4] 73 if rv, print 'Will load with partial name "[reference]"' 74 referredAss = _loadAssemblyWithSimpleName(reference) 75 if rv, print 'Load with partial name returned: [CobraCore.toTechString(referredAss)]' 76 if referredAss is nil, return couldNotFindMsg 77 reference += if(referredAss.location.endsWith('.exe'), '.exe', '.dll') 78 if referredAss 79 if _willReadDependencies # wired false in Compiler.cobra 80 for dependency in referredAss.getReferencedAssemblies 81 if rv 82 print '>> Loading dependency: [dependency]' 83 .indentPrint 84 try 85 _loadAssemblyNamed(dependency) 86 finally 87 .outdentPrint 88 print '<< Loading dependency: [dependency]' 89 else 90 _loadAssemblyNamed(dependency) 91 if rv, print 'Will read assembly: [referredAss]' 92 try 93 _readAssembly(referredAss, reference <> 'Cobra.Core.dll') 94 catch readExc as Exception 95 if rv, print 'Caught exception during read assembly: [readExc]' 96 throw 97 if rv, print 'Did read assembly: [referredAss]' 98 # reassert the preconditions. there have been bugs in the past 99 assert reference.endsWith('.dll') or reference.endsWith('.exe') 100 assert reference not in ['.dll', '.exe'] 101 .loadedReferences.add(reference) 102 if rv, print 'Returning nil (=okay) for __dotNetLoadReference("[reference]").' 103 return nil 104 else 43 44 if .options.isSpecified('library-directory') and not .options.boolValue('_Xpanded-searchPath') 45 _expandSearchPaths 46 reference = __expandRefPath(reference) 47 if rv, print 'Expanded reference [reference]' 48 49 referredAss = _searchForRef(reference, rv) 50 if referredAss is nil 105 51 if rv, print 'Returning "[couldNotFindMsg]" for __dotNetLoadReference("[reference]").' 106 52 return couldNotFindMsg 53 54 assert referredAss 55 if _willReadDependencies # wired false in Compiler.cobra 56 for dependency in referredAss.getReferencedAssemblies 57 if rv 58 print '>> Loading dependency: [dependency]' 59 .indentPrint 60 try 61 _loadAssemblyNamed(dependency) 62 finally 63 .outdentPrint 64 print '<< Loading dependency: [dependency]' 65 else 66 _loadAssemblyNamed(dependency) 67 if rv, print 'Will read assembly: [referredAss]' 68 try 69 _readAssembly(referredAss to !, reference <> 'Cobra.Core.dll') 70 catch readExc as Exception 71 if rv, print 'Caught exception during read assembly: [readExc]' 72 throw 73 if rv, print 'Did read assembly: [referredAss]' 74 # reassert the preconditions. there have been bugs in the past 75 assert reference.endsWith('.dll') or reference.endsWith('.exe') 76 assert reference not in ['.dll', '.exe'] 77 78 .loadedReferences.add(reference) 79 if rv, print 'Returning nil (=okay) for __dotNetLoadReference("[reference]").' 80 return nil 81 82 83 def _searchForRef(reference as String, rv as int) as Assembly? 84 """ 85 Look for assembly references ( as file or path) in 'standard' places. 86 1) as a file in cwd or as absolute pathname 87 2) as a file made from path combined with entries from library-directory settings. 88 3) if not a pathname, look in GAC 89 4) In current Framework path (framework runtime dir). 90 """ 91 #try absolute path or in cwd 92 referredAss = __tryLoadAssemblyFile(reference, rv) 93 if referredAss, return referredAss 94 95 #try search paths 96 # TODO: the problem with -lib: in both Cobra and C# is that it has no effect on runtime, 97 # you must still register the DLLs in the GAC or copy them into the same dir as the .exe 98 # because the -lib: paths are not passed into executable. 99 # So should Cobra copy the .dll's into the target directory (if their paths are not in MONO_PATH)? 100 if rv, print 'File does not exist in cwd.' 101 searchPaths = .options.getDefault('library-directory', List<of String>()) to List<of String> 102 for searchPath in searchPaths 103 if rv, print 'Checking lib path: "[searchPath]"' 104 combinedPath = Path.combine(searchPath, reference) 105 referredAss = __tryLoadAssemblyFile(combinedPath, rv) 106 if referredAss, break 107 if rv 108 if searchPaths.count == 0, print 'No lib paths to search.' 109 else if not referredAss, print 'Did not find "[reference]" in lib paths' 110 if referredAss 111 return referredAss 107 112 113 if not reference.hasSlash # no path in reference 114 # try system wide (GAC) 115 if reference.endsWith('.dll'), reference = reference[:-4] 116 if rv, print 'Will load with partial name "[reference]"' 117 referredAss = _loadAssemblyWithSimpleName(reference) 118 if rv, print 'Load with partial name returned: [CobraCore.toTechString(referredAss)]' 119 if referredAss 120 reference += if(referredAss.location.endsWith('.exe'), '.exe', '.dll') 121 return referredAss 122 123 # try in current Framework path 124 fmwkPath = System.Runtime.InteropServices.RuntimeEnvironment.getRuntimeDirectory 125 combinedPath = Path.combine(fmwkPath, reference) 126 if rv, print 'Checking framework path: "[combinedPath]"' 127 referredAss = __tryLoadAssemblyFile(combinedPath, rv) 128 129 return referredAss 130 131 def _expandSearchPaths 132 searchPaths = .options.getDefault('library-directory', List<of String>()) to List<of String> 133 expanded = List<of String>() 134 changed = false 135 for searchPath in searchPaths 136 esp = __expandRefPath(searchPath) 137 changed = not ( esp == searchPath) 138 expanded.add(esp) 139 if changed, .options['library-directory'] = expanded 140 .options['_Xpanded-searchPath'] = true #so dont redo 141 142 def __expandRefPath(reference as String) as String 143 """Expand patterns in reference to Framework<wordWidth> and full Framework pathname.""" 144 ptn = '{_FW}' # expand to 'Framework' or 'Framework64' as in C:\Windows\Microsoft.NET\{_FW}\v4.0.30319\FileName 145 ptn1 = '{_FWP}' # as in {_FWP}/FileName expands to C:\Windows\Microsoft.NET\Framework[64]\v4.0.30319/FileName 146 fmwkPath = System.Runtime.InteropServices.RuntimeEnvironment.getRuntimeDirectory[0:-1] # drop trailing '\' 147 if reference.contains(ptn) 148 fmwkExpand = if(fmwkPath.contains('Framework64'), 'Framework64', 'Framework') 149 reference = reference.before(ptn) + fmwkExpand + reference.after(ptn) 150 if reference.startsWith(ptn1) 151 reference = fmwkPath + reference.after(ptn1) 152 return reference 153 154 def __tryLoadAssemblyFile(path as String, rv as int) as Assembly? 155 if File.exists(path) 156 if rv, print '"[path]" found as file. Will _loadAssemblyFileNamed().' 157 referredAss = _loadAssemblyFileNamed(path) 158 if rv, print '_loadAssemblyFileNamed() returned: [CobraCore.toTechString(referredAss)]' 159 return referredAss 160 return nil 161 108 162 def _loadAssemblyNamed(assName as AssemblyName) 109 163 # to-do: retire this? 110 164 throw Exception('not expecting this to be called') -
Tests/720-libraries/050-refs/032-ref-expand.cobra
1 # .require. dotnet 2 # .compile-only. 3 4 # testing refs and libs expansions - this is a compile test 5 # Mods for ref usage: 6 # ref - 'Framework' path portion expansion for 32/64 ('Framework' or 'Framework64' 7 # '{_FW}' expands to 'Framework' or 'Framework64' depending on current Framework platform word size 8 9 @ref 'C:\Windows\Microsoft.NET\{_FW}\v4.0.30319\WPF\PresentationFramework' 10 @ref 'C:\Windows\Microsoft.NET\{_FW}\v4.0.30319\WPF\PresentationCore' 11 @ref 'C:\Windows\Microsoft.NET\{_FW}\v4.0.30319\WPF\WindowsBase' 12 @ref 'System.Xaml' 13 14 use System.Windows 15 use System.Windows.Controls 16 use System.Windows.Controls.Primitives 17 use System.Windows.Media 18 use System.Windows.Threading 19 20 21 class MainWindow inherits Window 22 23 cue init 24 base.init 25 .title = 'Ref Test using WPF' 26 panel = StackPanel() 27 .content = panel 28 button = Button(content='Click me.', tag='KLIK!') 29 listen button.click, ref .buttonClicked 30 panel.children.add(button) 31 32 def buttonClicked(sender, ev as RoutedEventArgs ) 33 sender.content = '(Clicked)' 34 35 36 class Program 37 38 def main has STAThread 39 Program().run 40 41 def run 42 app = Application() 43 listen app.dispatcherUnhandledException, ref .dispatcherUnhandledException 44 # change/remove test to see/interact with GUI 45 if false 46 app.run(MainWindow()) 47 48 def dispatcherUnhandledException(sender, args as DispatcherUnhandledExceptionEventArgs) 49 msg = 'Exception: ' + args.exception.message 50 MessageBox.show(msg, 'Unhandled Exception', MessageBoxButton.OK) 51 args.handled = true -
Tests/720-libraries/050-refs/034-ref-expand.cobra
1 # .require. dotnet 2 # .compile-only. 3 4 # testing refs and libs expansions - this is a compile test 5 # Mods for ref usage: 6 # ref - 'Framework' path portion expansion for 32/64 ('Framework' or 'Framework64' 7 # '{_FWP}' expands to full (current) absolute Framework path 8 # '{_FW}' expands to 'Framework' or 'Framework64' depending on current Framework platform word size 9 # mixed combos 10 11 @ref '{_FWP}\WPF\PresentationFramework' 12 @ref '{_FWP}\WPF\PresentationCore' 13 @ref 'C:\Windows\Microsoft.NET\{_FW}\v4.0.30319\WPF\WindowsBase' 14 @ref 'System.Xaml' 15 16 use System.Windows 17 use System.Windows.Controls 18 use System.Windows.Controls.Primitives 19 use System.Windows.Media 20 use System.Windows.Threading 21 22 23 class MainWindow inherits Window 24 25 cue init 26 base.init 27 .title = 'Ref Test using WPF' 28 panel = StackPanel() 29 .content = panel 30 button = Button(content='Click me.', tag='KLIK!') 31 listen button.click, ref .buttonClicked 32 panel.children.add(button) 33 34 def buttonClicked(sender, ev as RoutedEventArgs ) 35 sender.content = '(Clicked)' 36 37 38 class Program 39 40 def main has STAThread 41 Program().run 42 43 def run 44 app = Application() 45 listen app.dispatcherUnhandledException, ref .dispatcherUnhandledException 46 # change/remove test to see/interact with GUI 47 if false 48 app.run(MainWindow()) 49 50 def dispatcherUnhandledException(sender, args as DispatcherUnhandledExceptionEventArgs) 51 msg = 'Exception: ' + args.exception.message 52 MessageBox.show(msg, 'Unhandled Exception', MessageBoxButton.OK) 53 args.handled = true -
Tests/720-libraries/050-refs/036-ref-expand.cobra
1 # .require. dotnet 2 # .compile-only. 3 4 # testing refs and libs expansions - this is a compile test 5 # Mods for ref usage: 6 # ref - 'Framework' path portion expansion for 32/64 ('Framework' or 'Framework64' 7 # '{_FWP}' expands to full (current) absolute Framework path 8 # '{_FW}' expands to 'Framework' or 'Framework64' depending on current Framework platform word size 9 # mixed combos refs and libs 10 11 @args -lib:'{_FWP}\WPF' 12 13 @ref 'PresentationFramework' 14 @ref '{_FWP}\WPF\PresentationCore' 15 @ref 'C:\Windows\Microsoft.NET\{_FW}\v4.0.30319\WPF\WindowsBase' 16 @ref 'System.Xaml' 17 18 use System.Windows 19 use System.Windows.Controls 20 use System.Windows.Controls.Primitives 21 use System.Windows.Media 22 use System.Windows.Threading 23 24 25 class MainWindow inherits Window 26 27 cue init 28 base.init 29 .title = 'Ref Test using WPF' 30 panel = StackPanel() 31 .content = panel 32 button = Button(content='Click me.', tag='KLIK!') 33 listen button.click, ref .buttonClicked 34 panel.children.add(button) 35 36 def buttonClicked(sender, ev as RoutedEventArgs ) 37 sender.content = '(Clicked)' 38 39 40 class Program 41 42 def main has STAThread 43 Program().run 44 45 def run 46 app = Application() 47 listen app.dispatcherUnhandledException, ref .dispatcherUnhandledException 48 # change/remove test to see/interact with GUI 49 if false 50 app.run(MainWindow()) 51 52 def dispatcherUnhandledException(sender, args as DispatcherUnhandledExceptionEventArgs) 53 msg = 'Exception: ' + args.exception.message 54 MessageBox.show(msg, 'Unhandled Exception', MessageBoxButton.OK) 55 args.handled = true -
Tests/720-libraries/050-refs/038-ref-expand.cobra
1 # .require. dotnet 2 # .compile-only. 3 4 # testing refs and libs expansions - this is a compile test 5 # Mods for ref usage: 6 # ref - 'Framework' path portion expansion for 32/64 ('Framework' or 'Framework64' 7 # '{_FWP}' expands to full (current) absolute Framework path 8 # '{_FW}' expands to 'Framework' or 'Framework64' depending on current Framework platform word size 9 # mixed combos refs and libs 10 11 @args -lib:'C:\Windows\Microsoft.NET\{_FW}\v4.0.30319\WPF' 12 13 @ref 'PresentationFramework' 14 @ref 'C:\Windows\Microsoft.NET\{_FW}\v4.0.30319\WPF\PresentationCore' 15 @ref '{_FWP}\WPF\WindowsBase' 16 @ref 'System.Xaml' 17 18 use System.Windows 19 use System.Windows.Controls 20 use System.Windows.Controls.Primitives 21 use System.Windows.Media 22 use System.Windows.Threading 23 24 25 class MainWindow inherits Window 26 27 cue init 28 base.init 29 .title = 'Ref Test using WPF' 30 panel = StackPanel() 31 .content = panel 32 button = Button(content='Click me.', tag='KLIK!') 33 listen button.click, ref .buttonClicked 34 panel.children.add(button) 35 36 def buttonClicked(sender, ev as RoutedEventArgs ) 37 sender.content = '(Clicked)' 38 39 40 class Program 41 42 def main has STAThread 43 Program().run 44 45 def run 46 app = Application() 47 listen app.dispatcherUnhandledException, ref .dispatcherUnhandledException 48 # change/remove test to see/interact with GUI 49 if false 50 app.run(MainWindow()) 51 52 def dispatcherUnhandledException(sender, args as DispatcherUnhandledExceptionEventArgs) 53 msg = 'Exception: ' + args.exception.message 54 MessageBox.show(msg, 'Unhandled Exception', MessageBoxButton.OK) 55 args.handled = true -
Tests/720-libraries/050-refs/020-lib-expand.cobra
1 # .require. dotnet 2 # .compile-only. 3 4 # testing refs and libs expansions - this is a compile test 5 # Mods for ref usage: 6 # lib - full current FrameWorkPath expansion 7 # '{_FWP}' expands to full (current) absolute Framework path 8 9 @args -lib:'{_FWP}\WPF' 10 11 @ref 'PresentationFramework' 12 @ref 'PresentationCore' 13 @ref 'WindowsBase' 14 @ref 'System.Xaml' 15 16 use System.Windows 17 use System.Windows.Controls 18 use System.Windows.Controls.Primitives 19 use System.Windows.Media 20 use System.Windows.Threading 21 22 23 class MainWindow inherits Window 24 25 cue init 26 base.init 27 .title = 'Ref Test using WPF' 28 panel = StackPanel() 29 .content = panel 30 button = Button(content='Click me.', tag='KLIK!') 31 listen button.click, ref .buttonClicked 32 panel.children.add(button) 33 34 def buttonClicked(sender, ev as RoutedEventArgs ) 35 sender.content = '(Clicked)' 36 37 38 class Program 39 40 def main has STAThread 41 Program().run 42 43 def run 44 app = Application() 45 listen app.dispatcherUnhandledException, ref .dispatcherUnhandledException 46 # change/remove test to see/interact with GUI 47 if false 48 app.run(MainWindow()) 49 50 def dispatcherUnhandledException(sender, args as DispatcherUnhandledExceptionEventArgs) 51 msg = 'Exception: ' + args.exception.message 52 MessageBox.show(msg, 'Unhandled Exception', MessageBoxButton.OK) 53 args.handled = true -
Tests/720-libraries/050-refs/010-fmwk-insert.cobra
1 # .require. dotnet 2 # .compile-only. 3 4 # testing refs and libs expansions - this is a compile test 5 # Mods for ref usage: 6 # add current framework path to places to look in for assemblies 7 8 9 @ref 'WPF\PresentationFramework' 10 @ref 'WPF\PresentationCore' 11 @ref 'WPF\WindowsBase' 12 @ref 'System.Xaml' 13 14 use System.Windows 15 use System.Windows.Controls 16 use System.Windows.Controls.Primitives 17 use System.Windows.Media 18 use System.Windows.Threading 19 20 21 class MainWindow inherits Window 22 23 cue init 24 base.init 25 .title = 'Ref Test using WPF' 26 panel = StackPanel() 27 .content = panel 28 button = Button(content='Click me.', tag='KLIK!') 29 listen button.click, ref .buttonClicked 30 panel.children.add(button) 31 32 def buttonClicked(sender, ev as RoutedEventArgs ) 33 sender.content = '(Clicked)' 34 35 36 class Program 37 38 def main has STAThread 39 Program().run 40 41 def run 42 app = Application() 43 listen app.dispatcherUnhandledException, ref .dispatcherUnhandledException 44 # change/remove test to see/interact with GUI 45 if false 46 app.run(MainWindow()) 47 48 def dispatcherUnhandledException(sender, args as DispatcherUnhandledExceptionEventArgs) 49 msg = 'Exception: ' + args.exception.message 50 MessageBox.show(msg, 'Unhandled Exception', MessageBoxButton.OK) 51 args.handled = true -
Tests/720-libraries/050-refs/022-lib-expand.cobra
1 # .require. dotnet 2 # .compile-only. 3 4 # testing refs and libs expansions - this is a compile test 5 # Mods for ref usage: 6 # lib - 'Framework' path portion expansion for 32/64 ('Framework' or 'Framework64' 7 # '{_FW}' expands to 'Framework' or 'Framework64' depending on current Framework platform word size 8 9 @args -lib:'C:\Windows\Microsoft.NET\{_FW}\v4.0.30319\WPF' 10 11 @ref 'PresentationFramework' 12 @ref 'PresentationCore' 13 @ref 'WindowsBase' 14 @ref 'System.Xaml' 15 16 use System.Windows 17 use System.Windows.Controls 18 use System.Windows.Controls.Primitives 19 use System.Windows.Media 20 use System.Windows.Threading 21 22 23 class MainWindow inherits Window 24 25 cue init 26 base.init 27 .title = 'Ref Test using WPF' 28 panel = StackPanel() 29 .content = panel 30 button = Button(content='Click me.', tag='KLIK!') 31 listen button.click, ref .buttonClicked 32 panel.children.add(button) 33 34 def buttonClicked(sender, ev as RoutedEventArgs ) 35 sender.content = '(Clicked)' 36 37 38 class Program 39 40 def main has STAThread 41 Program().run 42 43 def run 44 app = Application() 45 listen app.dispatcherUnhandledException, ref .dispatcherUnhandledException 46 # change/remove test to see/interact with GUI 47 if false 48 app.run(MainWindow()) 49 50 def dispatcherUnhandledException(sender, args as DispatcherUnhandledExceptionEventArgs) 51 msg = 'Exception: ' + args.exception.message 52 MessageBox.show(msg, 'Unhandled Exception', MessageBoxButton.OK) 53 args.handled = true -
Tests/720-libraries/050-refs/030-ref-expand.cobra
1 # .require. dotnet 2 # .compile-only. 3 4 # testing refs and libs expansions - this is a compile test 5 # Mods for ref usage: 6 # ref - full current FrameWorkPath expansion 7 # '{_FWP}' expands to full (current) absolute Framework path 8 9 10 @ref '{_FWP}\WPF\PresentationFramework' 11 @ref '{_FWP}\WPF\PresentationCore' 12 @ref '{_FWP}\WPF\WindowsBase' 13 @ref 'System.Xaml' 14 15 use System.Windows 16 use System.Windows.Controls 17 use System.Windows.Controls.Primitives 18 use System.Windows.Media 19 use System.Windows.Threading 20 21 22 class MainWindow inherits Window 23 24 cue init 25 base.init 26 .title = 'Ref Test using WPF' 27 panel = StackPanel() 28 .content = panel 29 button = Button(content='Click me.', tag='KLIK!') 30 listen button.click, ref .buttonClicked 31 panel.children.add(button) 32 33 def buttonClicked(sender, ev as RoutedEventArgs ) 34 sender.content = '(Clicked)' 35 36 37 class Program 38 39 def main has STAThread 40 Program().run 41 42 def run 43 app = Application() 44 listen app.dispatcherUnhandledException, ref .dispatcherUnhandledException 45 # change/remove test to see/interact with GUI 46 if false 47 app.run(MainWindow()) 48 49 def dispatcherUnhandledException(sender, args as DispatcherUnhandledExceptionEventArgs) 50 msg = 'Exception: ' + args.exception.message 51 MessageBox.show(msg, 'Unhandled Exception', MessageBoxButton.OK) 52 args.handled = true -
Tests/720-libraries/100-microsoft/200-wpf.cobra
1 1 # .require. dotnet 2 2 # .compile-only. 3 3 4 @ref 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\WPF\PresentationFramework.dll' 5 @ref 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\WPF\PresentationCore.dll' 6 @ref 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\WPF\WindowsBase.dll' 4 #@ref 'C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\PresentationFramework.dll' 5 #@ref 'C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\PresentationCore.dll' 6 #@ref 'C:\\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\WindowsBase.dll' 7 8 #@ref '{_FWP}\WPF\PresentationFramework.dll' 9 #@ref '{_FWP}\WPF\PresentationCore.dll' 10 #@ref '{_FWP}\WPF\WindowsBase.dll' 7 11 @ref 'System.Xaml' 8 12 9 13 use System.Windows -
HowTo/382-WPF.cobra
6 6 See also: Samples/Notepad.cobra which uses WPF. 7 7 """ 8 8 9 @args -lib:'C:\Windows\Microsoft.NET\ Framework\v4.0.30319\WPF'9 @args -lib:'C:\Windows\Microsoft.NET\{_FW}\v4.0.30319\WPF' 10 10 11 11 @ref 'PresentationFramework' 12 12 @ref 'PresentationCore'