Actually, that will work just fine...
<%if 1 = 2 then%>
<!--#INCLUDE VIRTUAL="/inc/fileA.asp"-->
<%else%>
<!--#INCLUDE VIRTUAL="/inc/fileB.asp"-->
<%end if%>
The actions/results/output of the selected INCLUDE will appear on your web page.
The problem is, YES -- BOTH files get executed prior to one of them being displayed. So, it's a bit inefficient.
But, if you go the (admittedly preferred) Server.Execute("/fileB.asp") route, you may run into some other trouble. Here's why:
When you create variables on your page, the INCLUDE files have full access to them... so, the code inside your INCLUDE can use those variables to alter their results.
Files which are EXECUTED cannot access page-variables... nor can they pass page-variables back to be used by the main page AFTER the code is executed. Executes are entirely self-contained. They DO, however, have access to the Server variables, and the Request object... so you CAN have things like <%if request.querystring("varName") = "bob" then%> in your execute file.
The best thing about executes (IMHO) is that the code is ONLY executed IF it is the selected code. Also, the execute command accepts a variable name, so the following would work just fine, too:
<%
select case varName
case 1
incFile = "/inc/case1.inc"
case 2
incFile = "/inc/errormsg.inc"
case 3
incFile = "/people/webmaster_bio.htm"
case else
incFile = "default.inc"
end select
Server.Execute(incFile)
%>