You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by wr...@apache.org on 2006/07/20 22:17:26 UTC
svn commit: r424043 - /httpd/mod_aspdotnet/trunk/README.txt
Author: wrowe
Date: Thu Jul 20 13:17:26 2006
New Revision: 424043
URL: http://svn.apache.org/viewvc?rev=424043&view=rev
Log:
Colm's question triggered a review of README.txt which became
slightly out of date when the installer was migrated to a more
recent msi.
Modified:
httpd/mod_aspdotnet/trunk/README.txt
Modified: httpd/mod_aspdotnet/trunk/README.txt
URL: http://svn.apache.org/viewvc/httpd/mod_aspdotnet/trunk/README.txt?rev=424043&r1=424042&r2=424043&view=diff
==============================================================================
--- httpd/mod_aspdotnet/trunk/README.txt (original)
+++ httpd/mod_aspdotnet/trunk/README.txt Thu Jul 20 13:17:26 2006
@@ -12,19 +12,27 @@
for Apache 2.0 with the syntax;
set APACHE_PATH=d:\path\to\apache2
- devenv mod_aspdotnet.sln /useenv /build Release /project installer
+ devenv mod_aspdotnet.sln /useenv /build Release /project mod_aspdotnet
or to build for Apache 2.1-dev or Apache 2.2, invoke with the syntax;
set APACHE22_PATH=d:\path\to\apache2.2
- devenv mod_aspdotnet.sln /useenv /build "Release 2.2" /project installer
+ devenv mod_aspdotnet.sln /useenv /build "Release 2.2" /project mod_aspdotnet
The necessary files, mod_aspdotnet.so [+.pdb for debug symbols] and the
Apache.Web.dll [+.pdb] are built into the installer.msi package at
-the top-level Release/ directory of this module.
+the top-level Release/ directory of this module.
+
+The true "Debug" and "Debug 2.2" flavors work similarly, and eliminate
+optimizations that make debugging difficult. However, the installer is
+not designed to package the debug flavor into an .msi package. See the
+"Deployment Notes" section later in this README for an explanation of
+how to manually install either flavor, locally, without an .msi package.
It is absolutely critical that this build occurs using the Visual Studio
-.NET (7.0) version. Older VS 6.0 compilers won't support the module.
+.NET (al la 2002, or 7.0) version. Older VS 6.0 compilers won't support
+the module, and newer VS compilers are not entirely compatible with the
+original C++.NET syntax.
Note that the Apache.Web.dll is temporarily registered, it's type library
(.tlb file) is extracted, and it is unregistered as a post-build step for
@@ -32,11 +40,21 @@
the usual build environment remains clean of excess COM registration gunk.
We build Apache.Web.dll with delay-load of libhttpd, libapr and libaprutil
-dll's. This is important since Apache.Web.dll can't be touched unless
-it is literally adjacent (in the same directory) to those Apache 2.0 .dll's.
-With this method, Apache.Web.dll can be loaded (provided we don't instantiate
-an Apache.Web.WorkerRequest object) even without resolving the path to those
-dll's in the Serverroot/bin directory.
+dll's. This is important since Apache.Web.dll normally can't be loaded,
+even for the .NET framework tools to inspect the .dll, unless it is literally
+adjacent (in the same directory) to Apache's .dll's. And Apache.Web.dll must
+be in the Global Assembly Cache to participate in the system.web framework.
+So, using this alternate delay-load method, Apache.Web.dll can be loaded
+(provided we don't instantiate an Apache.Web.WorkerRequest object), even when
+it cannot resolve the path to Apache's dll's in the Serverroot/bin directory.
+
+Before using InstallShield to actually package a release build, the syntax;
+
+ devenv mod_aspdotnet.sln /useenv /build Release /project resolve_apache
+ devenv mod_aspdotnet.sln /useenv /build "Release 2.2" /project resolve_apache
+
+will build the helper .dll to allow the installer to search the local machine
+for installations of Apache.exe (Release flavor) or httpd.exe (Release 2.2).
Alternate Build Notes
@@ -56,17 +74,24 @@
System.Web.Hosting framework), while the Apache .dll files remain in the
Apache bin directory.
+This should be solved in a future release by migrating to VisualStudio 2005
+which offers a much more complete "Lite" flavor that users may obtain for
+free from Microsoft.
+
Deployment Notes
----------------
-YOU MUST test both the .NET Framework SDK, as well as the .NET Framework
-Runtime environments. A number of internal behaviors vary between these
-two releases, and Exceptions, destruction, construction and failure cases
-will manifest differently between the two variants.
+YOU should test that the module runs under both the full .NET Framework SDK,
+as well as within the .NET Framework Runtime environment only. A number
+of internal behaviors vary between these two environments, and Exceptions,
+destruction, construction and failure cases will manifest differently between
+the two environments.
ASP.NET requires the Apache::Web::Request object to be registered in
the Global Assembly Cache in order to instantiate it's host container.
+So it is not possible to install Apache.Web.dll in the 'usual' modules
+subdirectory of Apache HTTP Server.
The Debug build will do so automatically, copying mod_aspdotnet.so + .pdb
into the $(APACHE_PATH)\modules directory, for testing.
@@ -95,6 +120,8 @@
----
Consider pre-compiling the package into native code prior to distribution.
+(Apparently, InstallShield always does this for GAC-registered modules, so
+this consideration might be moot.)
Consider building a roll-up assembly integrating the libhttpd et. al. with
the Apache.Web.dll package. Perhaps we can force them to live in different
@@ -104,9 +131,12 @@
Consider registering aspnet_isapi.dll keys in the registry. This could
occur as part of the installer or module startup. The installer would be
-a much more efficient method.
+a much more efficient method. (This is no longer needed with .NET 1.1 as
+it more thoroughly registers itself even in the absense of IIS on the target
+machine.)
Note that the .msi package searches for apache/bin/apache.exe up to 3 levels
deep from the local hard drives, in sequence. It aught to test further, as
-necessary, or allow explicitly long paths.
-
+necessary, or allow explicitly long paths, if the user chooses. The path can
+be manually specified in the installer, though, so the issue is not fatal,
+and the 3 level depth avoids waiting a half hour when invoking the installer.