Jaroslaw, thank you.  You just answered my question.  ;)  Great minds
and all that...  "When the student is ready, the master will appear."

Flipping the order of those two items solved my config file problem, and
all is right with the world again.  Ergo, nevermind!  As my eldest son
would say on his birthday, "Time for happy happy cake."


-----Original Message-----
From: Jaroslaw Kowalski [mailto:[EMAIL PROTECTED] 
Sent: Tuesday, August 26, 2003 4:32 PM
To: NAnt Developers
Subject: [nant-dev] Ordering of <supportedRuntime>


Hi all!

I have a question regarding NAnt.exe.config. Currently it has:

    <startup>
        <supportedRuntime version="v1.0.3705" />
        <supportedRuntime version="v1.1.4322" />
    </startup>

I believe there are reasons for it to be reversed:

Imagine you have both .NET 1.0 and .NET 1.1 installed. You build your
application for .NET 1.1 using "nant -defaultframework:net-1.1". What
gets
compiled into your application is the reference to .NET 1.1
"mscorlib.dll",
which is fine.

The problems start when you want to run unit tests using <nunit2> task
of
NAnt on your DLL.

1. NAnt.exe starts and MSCOREE.DLL decides it should be managed by CLR
"v1.0.3705"
2. CLR loads mscorlib.dll from "v1.0.3705"
3. NAnt invokes <nunit2> task (compiled for v1.0.3705) which loads your
dll
(compiled for v1.1.4322)

and now you start getting lots of strange errors in different places
(mostly
security problems).
Since you're running under .NET 1.0 and trying to use assemblies (also
system dlls) from .NET 1.1 you get some errors like this:

-------------------
   [nunit2] System.Configuration.ConfigurationException: Error loading
XML
file f:\windows\microsoft
.net\framework\v1.0.3705\Config\machine.config Request for the
permission of
type System.Security.Pe
rmissions.StrongNameIdentityPermission, mscorlib, Version=1.0.3300.0,
Culture=neutral, PublicKeyToke
n=b77a5c561934e089 failed.
(f:\windows\microsoft.net\framework\v1.0.3705\Config\machine.config)
   at System.Configuration.ConfigurationRecord.OpenXmlTextReader(String
configFileName)
   at System.Configuration.ConfigurationRecord.Load(String filename)
   at
System.Configuration.DefaultConfigurationSystem.System.Configuration.ICo
nfig
urationSystem.Init
()
   at
System.Configuration.ConfigurationSettings.SetConfigurationSystem(IConfi
gura
tionSystem configS
ystem)
   at System.Configuration.ConfigurationSettings.GetConfig(String
sectionName)
   at System.Configuration.ConfigurationSettings.get_AppSettings()

-------------------

Fortunately Microsoft changed the versioning rules in .NET 1.1 and it is
able to emulate the behaviour of .NET 1.0 by transparently redirecting
to
its system assemblies so you are able to have one set of config settings
that work for both 1.0 and 1.1.

If you have the following order of <supportedRuntime>'s

    <startup>
        <supportedRuntime version="v1.1.4322" />
        <supportedRuntime version="v1.0.3705" />
    </startup>

.NET 1.1 (if installed) will load instead of .NET 1.0 and take control
of
your NAnt.exe process. Because of its assembly redirection capabilities
both
NAnt and others appdomains (like nunit2) will run smoothly.

Can someone fix it in CVS?

Jarek



-------------------------------------------------------
This SF.net email is sponsored by: VM Ware
With VMware you can run multiple operating systems on a single machine.
WITHOUT REBOOTING! Mix Linux / Windows / Novell virtual machines
at the same time. Free trial click
here:http://www.vmware.com/wl/offer/358/0
_______________________________________________
nant-developers mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/nant-developers


-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
nant-developers mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/nant-developers

Reply via email to