I have seen this work, though I must say with a few limitations as of now.
I followed a number of different links I dug up explaining further what Marc Gravell has explained - including the DLLs in the VS.Net project as content with "Copy Always" as their deployment.
They are being distributed properly on ClickOnce deployment, and I have them down to roughly 28-30mb work of libraries (of no consequence in our environment, but may be an issue if you have WAN deployment to many machines, or across poor bandwidth).
I include Oracle.DataAccess.Client just like you would any other reference. And set Copy Local = True.
I include the following libraries in the root of my project (this is to avoid any issues with path, though I am sure you could more cleanly place them in a subfolder if you wished to fiddle around with path-ing a bit):
msvcr71.dll - Microsoft runtime library. Not sure why it is needed but it is.
oci.dll
ociw32.dll
orannzsbb11.dll
oraocci11.dll
oraociicus11.dll
oraops11w.dll
All the "o..." dll's are part of the instant client download available on oracle. I believe the version that I am using is 11.0.6, maybe 11.0.7 - sorry I am unable to find out at the moment. These files are included as Content and Copy Always
My connection string looks like this:
*Data Source=(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = hostname)(PORT = 1521))(CONNECT_DATA = (SERVER = DEDICATED) (SID = oracle_world_here)));User Id=schema_here;Password=password_here;Persist Security Info=TRUE;*
Basically the Data Source looks like the TNSNAMES.ORA file, and then User ID and Password and security info make up the rest of the connection string.
Summary & Results:
What does this get me? It has allowed me to deploy via ClickOnce my WPF/C# application to XP workstations without fail.
Where it does fail so far is on Windows 2003, and Windows 7 workstations. It deploys, and then when it runs it never shows up. After debugging a little, I found it is choking on some of my CRUD fetch code... but as the application works well, and is still being deployed properly, I can only deduce that it is a compatibility with these OSes or 64-bit architecture.
With WiX or Xcopy there are ways to conditionally deploy client software based on OS, but in ClickOnce I have yet to find a way to accomplish this.
If anyone knows how to do that, I'm all ears.
Ian: Good luck. Let me know how it goes.
Marc: Lucky man. If the State wasn't broke I would beg for dotConnect. That using the Entity Framework would be deliciously easy to work with. No DAL at all, all nice and sexy OR/M done for ya. Congrats on scoring that tool.
-III