Different Web Setup Projects should have different output directories in Visual Studio 2005

I have 2 similar Setup Projects in Visual Studio 2005 solution. Actually second project was copied from the first one and some changes were done.


The first project has ouput file set as “ReleaseProject1.msi” and the second ““ReleaseProject2.msi”. I expected that “build solution“ will create both .msi files in the output directory.
However the second project cleans the output directory during build , and the Project1.msi was deleted.


The solution was to change output directory of the second project, e.g. ““Project2ReleaseProject2.msi”.

Dynamic Web Services reference URL in Visual Studio 2005

I am using dynamic URLBehavior for some web services and during Setup change web services URLs to appropriate value (based on MSDN article).

According to MSDN2: If you set the URL behavior of the Web reference to dynamic, the application obtains the URL at run time from the appSettings element of your application’s configuration file. 

However I’ve noticed that app.config file has entries for the same URL in both appSettings and <applicationSettings>.
After reading the generated code (Reference.vb/cs) it seems that appSetting entry is ignored, and the actual url from applicationSettings is used.

After some research I found a confirmation here.

I didn’t have a chance to test it yet. 

It seems like breaking change for my Setup/installer program.

Update: I’ve posted a helper class that allow me to Update Dynamic Web reference URLs Diring Installation in Visual Studio 2005

“default collation” for a SQL Server 2000 database

Some our clients reported  “’Cannot resolve collation conflict for equal to operation’” error. As it is explained here,  it could happen if the tempdb database collation differs from the user database collation.


I was curious where “default collation” for a SQL Server 2000 database is stored – in the database itself or in master system tables.


I didn’t find any good documentation for SQL Server 2000, but according to  SQL Server 2005 doc http://msdn2.microsoft.com/en-us/library/ms178534.aspx,


sys.databases view (corresponds to Master db ) has a column 









collation_name


sysname


Collation for the database. Acts as the default collation in the database.


NULL = Database is not online or AUTO_CLOSE is set to ON.


However I made a test


1.Created a new database with some Collation, different to what I have for my SQL instances.


2.Detached the database.


3. Attached the database to the another instance of SQL server.


The database default collation was the same, so it is stored in some database table, not in master database table.


BTW, unfortunetely, there is no way to change collation of tempdb without reinstalling the sql server (see discussion here


 


 

What DotNetNuke IsAdminControl function does.

The class DNNLibraryComponentsSkinsSkin.vb (and some others) call DotNetNuke.Common.Globals.IsAdminControl()  function.


There is no description in the function, and the code has too many negatives, that it is not obvious.


Once I figured it out, I decided to write it here.



The function returns True, if QueryString has “MID“ or “CTL“ parameter.


I am not fully understand, why it means an Admin contol.


There is some clarification in the document: http://www.yourephotostore.com/LinkClick.aspx?link=SSL_ModuleV3.pdf&mid=488


where you cannot add a module to them or where the “Display on All


When a page is called with a query string parameter of “ctl”, “mid” or “def” a different module loading procedure is called in the skin.vb module. These three parameters are used to define exactly what module/controlis to be loaded. This only loads the ONE module defined in parameters. Because the page can be called without changing the tabID, there is no way to get to this page to add the module. This may seem a little contrary to initial impressions of how DotNetNuke works,
but this is the way that module configuration edit routines are called. For example, when you go to the configuration screen for this module, look at the URL, you will see that it has the same tabID value from the calling page.


Pages” module option does not work.

I am not sure where “def“ parameter is used.


Also parameters tabid, ctl, mid explained in DNN documentation “DotNetNuke 3.0 Module Developer’s Guide“, section “One Page Many Controls“.


DotNetNuke.UI.Skins.Skin.Page_Init method calls IsAdminControl()  and if it is true, loads only specified by “ctl” or  “mid” module.


 


 

MS Access Project uses incorrect SQL if RecordSource starts with leading space.

I had a MS Access 2002 VB code


Form.RecordSource = ” Select * from dbo.[TempBarcodesList]  where SessionID= ” & Quoted(hdnSessionID)


with a leading space before Select in SQL statement.


Profiler showed that the following SQL was send to the database 


 exec sp_executesql N’SELECT * FROM   Select * from dbo.[TempBarcodesList]  where SessionID= ”2006-02-22 12:07:06.327”  WHERE “SessionId” = @P1 AND “AutoID” = @P2′, N’@P1 varchar(23),@P2 bigint’, ‘2006-02-22 12:07:06.327’, 22 


and it obviosly had sintax errors.


When the leading space  was remove access inserted brackets and generated SQL became correct:


exec sp_executesql N’SELECT * FROM ( Select * from dbo.[TempBarcodesList]  where SessionID= ”2006-02-22 11:49:48.043” ) AS DRVD_TBL WHERE “SessionId” = @P1 AND “AutoID” = @P2′, N’@P1 varchar(23),@P2 bigint’, ‘2006-02-22 11:49:48.043’, 12 


 


 

“Visual Studio 2005 is very slow” -some tips for ASP.NET projects

I am very disappointed with performance of VS 2005, in particular when building ASP.NET web site projects.

I’ve tried a lot of suggestions.

1.Workaround Description:
Delete windows.prf & windowsidx.prf from C:Documents and SettingsApplication DataMicrosoftVisual Studio8.0 .
Seems has no effect.

 2 Uncheck Navigation bar.

3.Disable wordwrap at: Tools>Options>TextEditor >C#>General4. My project had referenced DLLs located on shared folder on remote computer. When I moved DLLs to a local computer and changed project references, I’ve noticed some performance improvement when building project and opening ASP.NET forms.

 Speed up Visual Studio 2005 suggests a few things to try, but Track Active Item in Solution Explorer is too useful to uncheck.

You can Optimize the launch of the Visual Studio 2005 by disabling “Start Page” and splash screen.

Unfortunutely, it seems that there is not an environment settings issue, but the problem with VS 2005 itself.

Compiling ASP.NET web site project is quicker if using DevServer, not IIS.
 It is also quicker if run “Ctrl-F5“ (without debugging) , you can attach to WebDev.WebServer.exe later.

9/6/2006 I’ve installed MS HotFix http://support.microsoft.com/kb/917452,.

However when starting  ASP.NET web site project, “validating web site” still takes a while.
Update: See a recent FIX: A significant delay may occur when you try to debug an ASP.NET-connected application in Visual Studio 2005.

Update:I’ve found “Tips to optimize design-time build performance for Web Sites in Visual Studio 2005 “ that looks very promising.

There are also ScottGu posts  Tip/Trick: Optimizing ASP.NET 2.0 Web Project Build Performance with VS 2005 and Common Gotcha: Slow VS 2005 Web Site Build Performance Because of “Dueling Assembly References”  that address the issue.

Also I’ve started to use small solutions with WAP projects for development/debugging, that are compiled very quickly. 

ContainerSrc location in exported DotNetNuke Portal Template


The DotNetNuke Portal Template  document (in the DotNetNuke 4.0 download) has a few places where [G] notation is used ,e.g. [G]Skins/DNN/Skin.ascx, buf there is no explanation, how it is used.

From reading the code, I understood that it is used as a placeholder for current portal location of the specific folder.

So template should have entries with this notation [G](or [L] -?) but SOMETIMES existing Template export function does export the full hardcoded path. e.g.


<

module>
      <
containersrc>/FSDNN/Portals/_default/Containers/DNN-Blue/Image Header – Color Background.ascx</< FONT </containersrc>
</</MODULE</module>

and when the template is imported, it refers to incorrect virtual directory.


The problem could be fixed by replacing portal name (e.g./FSDNN/Portals/_default) to the placeholder [G].


The problem has been reported to DNN Support.


Update: I investigated more and found that only 4 modules have non null containersrc fields in TabModules table and export function just put into XML exactly what was in a table.
When I’ve opened Settings page for the Module, it didn’t show any specific container information (Display container-ticked,Module Container-Host,Not specified).
I didn’t do any changes to settings and click Update – and
containersrc was set to null in the TabModules table.
So the problem was caused by some data corruption(saving values to containersrc) in the past.
I will keep an eye to any procedures, that could cause this data change. 
 


UPDATE 28-mar-2006: Steps to reproduce the problem:
1.As an administrator open page with a module.
2.Click a title of the module.
3.Change the title of the module
4.Change focus outside the title of the module
The title of the modules will be saved, but also dnn_TabModules.ContainerSrc  field will be saved as not null value (e.g. /FSDNN/Portals/_default/Containers/DNN-Blue/Image Header – Color Background.ascx).
Use query “SELECT * FROM   dnn_TabModules where ContainerSrc is not null” to check it.

The ContainerSrc  field preferably should be left as null(alternatively as relative path with placeholder [G] or [L]).

Visual Basic function IsDate depends on Current Culture.

I was puzzled when VB function IsDate(20/02/2006) returned false( in Australia date format is dd/mm/yyyy).


After investigation using Reflector I found that it uses  Thread.CurrentThread.CurrentCulture and my ASP.NET application wasn’t set to use AU culture by default. Using CurrentCulture does make sense, but it is not documented in MSDN. 


 

DotNetNuke “Upload Custom Module” command sometimes does nothing.

I’ve noticed a few times that when in DotNetNuke 4. “Upload Custom Module” page I had a custom module in the list, “upload new file“ link does nothing instead of importing module.


It seems related to caching issue (see problem here). I suspect that even if the file is shown in the list, it still not in cache.


It will be more reliable to check list control directly instead of cache. And why the list to upload should be saved to cache? 


Additionally even if the list is empty, it is better to report about it to the user instead of silently return to module list.


The issue has been reported to DNN Support


The workaround is described here

Backup source files using MSBuild project.

I wanted to create batch to backup source files from my Projects folder, but also exclude some folders that I do not use.


I was amased how quickly I was able to do it using MSBuild project without any previous experience with the tool.


I’ve posted details  here.