I'm sorry to keep harping on about this one, but it is really quite
important for me to be able to list _all_ required assemblies in my Help
About box. Herfried kindly posted some code before that lists _loaded_
assemblies and their version, but I have one assembly that is not loaded
until the user has done something quite specific in the program, and I need
to list this one too. Other applications seem to manage it, so I wonder how
it can be done in .NET.
Furthermore, the code I have at present does not locate the assembly. I also
need to be able to do this so that I can be certain that all assemblies are
being loaded from the right place.
Can anyone help?
TIA
Charles 8 1751
Charles,
I have a C# application that does something similar (I think) to what
you're wanting. I'll paste the specific code below. The code is in C#
but should be easily converted to VB.NET. HTH
Jason Newell, MCAD
Software Engineer
################################################## #############################
private static bool PreloadAssemblies()
{
Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
AssemblyName[] assemblies = assembly.GetReferencedAssemblies();
foreach (AssemblyName assemblyName in assemblies)
{
try
{
Assembly.Load(assemblyName);
}
catch (System.IO.FileNotFoundException)
{
MessageBox.Show(
"Assembly " + assemblyName.Name + " was not found.",
"File Not Found",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
return false;
}
catch (System.BadImageFormatException)
{
MessageBox.Show(
"Assembly " + assemblyName.Name + " is an invalid file image.",
"Bad Image Format",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
return false;
}
catch (System.Security.SecurityException)
{
MessageBox.Show(
"You do not have rights to assembly " + assemblyName.Name + ".",
"Security Error",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
return false;
}
catch (System.Exception)
{
MessageBox.Show(
"Assembly " + assemblyName.Name + " cannot be loaded.",
"Assembly Load Error",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
return false;
}
}
return true;
}
################################################## #############################
Charles Law wrote: I'm sorry to keep harping on about this one, but it is really quite important for me to be able to list _all_ required assemblies in my Help About box. Herfried kindly posted some code before that lists _loaded_ assemblies and their version, but I have one assembly that is not loaded until the user has done something quite specific in the program, and I need to list this one too. Other applications seem to manage it, so I wonder how it can be done in .NET.
Furthermore, the code I have at present does not locate the assembly. I also need to be able to do this so that I can be certain that all assemblies are being loaded from the right place.
Can anyone help?
TIA
Charles
Hi Jason
Thanks for the response. I have converted and run the code you posted but I
don't seem to be quite there yet. I think my problem can be explained as
follows
I have a hierarchy of assemblies like this
MainApp -> SubAssembly1
-> SubAssembly2
-> SubAssembly3 -> SubAssembly4
-> SubAssembly5
If I list the referenced assemblies after preloading I get SubAssembly1,
SubAssembly2, SubAssembly3, and SubAssembly5, but not SubAssembly4.
Can you think of a way to get at SubAssembly4? Also, I still don't seem to
be able to identify where each assembly was loaded from.
Charles
"Jason Newell" <no****@nospam.com> wrote in message
news:uf****************@TK2MSFTNGP12.phx.gbl... Charles, I have a C# application that does something similar (I think) to what you're wanting. I'll paste the specific code below. The code is in C# but should be easily converted to VB.NET. HTH
Jason Newell, MCAD Software Engineer
################################################## ############################# private static bool PreloadAssemblies() { Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
AssemblyName[] assemblies = assembly.GetReferencedAssemblies();
foreach (AssemblyName assemblyName in assemblies) { try { Assembly.Load(assemblyName); } catch (System.IO.FileNotFoundException) { MessageBox.Show( "Assembly " + assemblyName.Name + " was not found.", "File Not Found", MessageBoxButtons.OK, MessageBoxIcon.Error); return false; } catch (System.BadImageFormatException) { MessageBox.Show( "Assembly " + assemblyName.Name + " is an invalid file image.", "Bad Image Format", MessageBoxButtons.OK, MessageBoxIcon.Error); return false; } catch (System.Security.SecurityException) { MessageBox.Show( "You do not have rights to assembly " + assemblyName.Name + ".", "Security Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return false; } catch (System.Exception) { MessageBox.Show( "Assembly " + assemblyName.Name + " cannot be loaded.", "Assembly Load Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return false; } } return true; } ################################################## ############################# Charles Law wrote: I'm sorry to keep harping on about this one, but it is really quite important for me to be able to list _all_ required assemblies in my Help About box. Herfried kindly posted some code before that lists _loaded_ assemblies and their version, but I have one assembly that is not loaded until the user has done something quite specific in the program, and I need to list this one too. Other applications seem to manage it, so I wonder how it can be done in .NET.
Furthermore, the code I have at present does not locate the assembly. I also need to be able to do this so that I can be certain that all assemblies are being loaded from the right place.
Can anyone help?
TIA
Charles
Charles,
I'm a little closer with this next code. I'm busy at work so I can't
finish it for you. Maybe this will help you get over the hump.
I converted the PreloadAssembly() method into a recursive method so
that it will traverse the Assembly structure. The problem right now is
it gets into an endless loop. Need some check there to get out of the
loop. Once you have an Assembly object, you can use the CodeBase
property to determine where the assembly is being loaded from. HTH
Jason Newell, MCAD
Software Engineer
################################################## ##################################
PreloadAssembly(Assembly.GetExecutingAssembly());
static void PreloadAssembly(Assembly assembly)
{
Console.WriteLine(assembly.CodeBase);
AssemblyName[] assemblies = assembly.GetReferencedAssemblies();
foreach (AssemblyName assemblyName in assemblies)
{
Assembly referencedAssembly = Assembly.Load(assemblyName);
PreloadAssembly(referencedAssembly);
}
}
################################################## #################################
Charles Law wrote: Hi Jason
Thanks for the response. I have converted and run the code you posted but I don't seem to be quite there yet. I think my problem can be explained as follows
I have a hierarchy of assemblies like this
MainApp -> SubAssembly1 -> SubAssembly2 -> SubAssembly3 -> SubAssembly4 -> SubAssembly5
If I list the referenced assemblies after preloading I get SubAssembly1, SubAssembly2, SubAssembly3, and SubAssembly5, but not SubAssembly4.
Can you think of a way to get at SubAssembly4? Also, I still don't seem to be able to identify where each assembly was loaded from.
Charles
"Jason Newell" <no****@nospam.com> wrote in message news:uf****************@TK2MSFTNGP12.phx.gbl...
Charles, I have a C# application that does something similar (I think) to what you're wanting. I'll paste the specific code below. The code is in C# but should be easily converted to VB.NET. HTH
Jason Newell, MCAD Software Engineer
################################################ ############################### private static bool PreloadAssemblies() { Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
AssemblyName[] assemblies = assembly.GetReferencedAssemblies();
foreach (AssemblyName assemblyName in assemblies) { try { Assembly.Load(assemblyName); } catch (System.IO.FileNotFoundException) { MessageBox.Show( "Assembly " + assemblyName.Name + " was not found.", "File Not Found", MessageBoxButtons.OK, MessageBoxIcon.Error); return false; } catch (System.BadImageFormatException) { MessageBox.Show( "Assembly " + assemblyName.Name + " is an invalid file image.", "Bad Image Format", MessageBoxButtons.OK, MessageBoxIcon.Error); return false; } catch (System.Security.SecurityException) { MessageBox.Show( "You do not have rights to assembly " + assemblyName.Name + ".", "Security Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return false; } catch (System.Exception) { MessageBox.Show( "Assembly " + assemblyName.Name + " cannot be loaded.", "Assembly Load Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return false; } } return true; } ################################################ ############################### Charles Law wrote:
I'm sorry to keep harping on about this one, but it is really quite important for me to be able to list _all_ required assemblies in my Help About box. Herfried kindly posted some code before that lists _loaded_ assemblies and their version, but I have one assembly that is not loaded until the user has done something quite specific in the program, and I need to list this one too. Other applications seem to manage it, so I wonder how it can be done in .NET.
Furthermore, the code I have at present does not locate the assembly. I also need to be able to do this so that I can be certain that all assemblies are being loaded from the right place.
Can anyone help?
TIA
Charles
Hi Jason
Great minds ... I tried making it recursive before I posted back last time,
and hit exactly the same problem. It seems like there are circular
references amongst the Microsoft assemblies, which is unfortunate.
Thanks for looking at it again.
Charles
"Jason Newell" <no****@nospam.com> wrote in message
news:Ot**************@TK2MSFTNGP09.phx.gbl... Charles, I'm a little closer with this next code. I'm busy at work so I can't finish it for you. Maybe this will help you get over the hump. I converted the PreloadAssembly() method into a recursive method so that it will traverse the Assembly structure. The problem right now is it gets into an endless loop. Need some check there to get out of the loop. Once you have an Assembly object, you can use the CodeBase property to determine where the assembly is being loaded from. HTH
Jason Newell, MCAD Software Engineer
################################################## ################################## PreloadAssembly(Assembly.GetExecutingAssembly());
static void PreloadAssembly(Assembly assembly) { Console.WriteLine(assembly.CodeBase);
AssemblyName[] assemblies = assembly.GetReferencedAssemblies(); foreach (AssemblyName assemblyName in assemblies) { Assembly referencedAssembly = Assembly.Load(assemblyName); PreloadAssembly(referencedAssembly); } }
################################################## #################################
Charles Law wrote: Hi Jason
Thanks for the response. I have converted and run the code you posted but I don't seem to be quite there yet. I think my problem can be explained as follows
I have a hierarchy of assemblies like this
MainApp -> SubAssembly1 -> SubAssembly2 -> SubAssembly3 -> SubAssembly4 -> SubAssembly5
If I list the referenced assemblies after preloading I get SubAssembly1, SubAssembly2, SubAssembly3, and SubAssembly5, but not SubAssembly4.
Can you think of a way to get at SubAssembly4? Also, I still don't seem to be able to identify where each assembly was loaded from.
Charles
"Jason Newell" <no****@nospam.com> wrote in message news:uf****************@TK2MSFTNGP12.phx.gbl...
Charles, I have a C# application that does something similar (I think) to what you're wanting. I'll paste the specific code below. The code is in C# but should be easily converted to VB.NET. HTH
Jason Newell, MCAD Software Engineer
############################################### ################################ private static bool PreloadAssemblies() { Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
AssemblyName[] assemblies = assembly.GetReferencedAssemblies();
foreach (AssemblyName assemblyName in assemblies) { try { Assembly.Load(assemblyName); } catch (System.IO.FileNotFoundException) { MessageBox.Show( "Assembly " + assemblyName.Name + " was not found.", "File Not Found", MessageBoxButtons.OK, MessageBoxIcon.Error); return false; } catch (System.BadImageFormatException) { MessageBox.Show( "Assembly " + assemblyName.Name + " is an invalid file image.", "Bad Image Format", MessageBoxButtons.OK, MessageBoxIcon.Error); return false; } catch (System.Security.SecurityException) { MessageBox.Show( "You do not have rights to assembly " + assemblyName.Name + ".", "Security Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return false; } catch (System.Exception) { MessageBox.Show( "Assembly " + assemblyName.Name + " cannot be loaded.", "Assembly Load Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return false; } } return true; } ############################################### ################################ Charles Law wrote:
I'm sorry to keep harping on about this one, but it is really quite important for me to be able to list _all_ required assemblies in my Help About box. Herfried kindly posted some code before that lists _loaded_ assemblies and their version, but I have one assembly that is not loaded until the user has done something quite specific in the program, and I need to list this one too. Other applications seem to manage it, so I wonder how it can be done in .NET.
Furthermore, the code I have at present does not locate the assembly. I also need to be able to do this so that I can be certain that all assemblies are being loaded from the right place.
Can anyone help?
TIA
Charles
Charles,
The endless loop can easily be adverted by keeping a list of
Asssemblies that you've already loaded and not trying to load them
twice. I just didn't have time to code it.
Your requirement was to list all required Assemblies with their path,
which is what this does. With the endless loop check implemented,
shouldn't this be your final solution?
Jason Newell, MCAD
Software Engineer
Charles Law wrote: Hi Jason
Great minds ... I tried making it recursive before I posted back last time, and hit exactly the same problem. It seems like there are circular references amongst the Microsoft assemblies, which is unfortunate.
Thanks for looking at it again.
Charles
"Jason Newell" <no****@nospam.com> wrote in message news:Ot**************@TK2MSFTNGP09.phx.gbl...
Charles, I'm a little closer with this next code. I'm busy at work so I can't finish it for you. Maybe this will help you get over the hump. I converted the PreloadAssembly() method into a recursive method so that it will traverse the Assembly structure. The problem right now is it gets into an endless loop. Need some check there to get out of the loop. Once you have an Assembly object, you can use the CodeBase property to determine where the assembly is being loaded from. HTH
Jason Newell, MCAD Software Engineer
################################################ #################################### PreloadAssembly(Assembly.GetExecutingAssembly()) ;
static void PreloadAssembly(Assembly assembly) { Console.WriteLine(assembly.CodeBase);
AssemblyName[] assemblies = assembly.GetReferencedAssemblies(); foreach (AssemblyName assemblyName in assemblies) { Assembly referencedAssembly = Assembly.Load(assemblyName); PreloadAssembly(referencedAssembly); } }
################################################ ###################################
Charles Law wrote:
Hi Jason
Thanks for the response. I have converted and run the code you posted but I don't seem to be quite there yet. I think my problem can be explained as follows
I have a hierarchy of assemblies like this
MainApp -> SubAssembly1 -> SubAssembly2 -> SubAssembly3 -> SubAssembly4 -> SubAssembly5
If I list the referenced assemblies after preloading I get SubAssembly1, SubAssembly2, SubAssembly3, and SubAssembly5, but not SubAssembly4.
Can you think of a way to get at SubAssembly4? Also, I still don't seem to be able to identify where each assembly was loaded from.
Charles
"Jason Newell" <no****@nospam.com> wrote in message news:uf****************@TK2MSFTNGP12.phx.gbl. ..
Charles, I have a C# application that does something similar (I think) to what you're wanting. I'll paste the specific code below. The code is in C# but should be easily converted to VB.NET. HTH
Jason Newell, MCAD Software Engineer
############################################## ################################# private static bool PreloadAssemblies() { Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
AssemblyName[] assemblies = assembly.GetReferencedAssemblies();
foreach (AssemblyName assemblyName in assemblies) { try { Assembly.Load(assemblyName); } catch (System.IO.FileNotFoundException) { MessageBox.Show( "Assembly " + assemblyName.Name + " was not found.", "File Not Found", MessageBoxButtons.OK, MessageBoxIcon.Error); return false; } catch (System.BadImageFormatException) { MessageBox.Show( "Assembly " + assemblyName.Name + " is an invalid file image.", "Bad Image Format", MessageBoxButtons.OK, MessageBoxIcon.Error); return false; } catch (System.Security.SecurityException) { MessageBox.Show( "You do not have rights to assembly " + assemblyName.Name + ".", "Security Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return false; } catch (System.Exception) { MessageBox.Show( "Assembly " + assemblyName.Name + " cannot be loaded.", "Assembly Load Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return false; } } return true; } ############################################## ################################# Charles Law wrote:
>I'm sorry to keep harping on about this one, but it is really quite >important for me to be able to list _all_ required assemblies in my Help >About box. Herfried kindly posted some code before that lists _loaded_ >assemblies and their version, but I have one assembly that is not loaded >until the user has done something quite specific in the program, and I >need to list this one too. Other applications seem to manage it, so I >wonder how it can be done in .NET. > >Furthermore, the code I have at present does not locate the assembly. I >also need to be able to do this so that I can be certain that all >assemblies are being loaded from the right place. > >Can anyone help? > >TIA > >Charles >
Jason Thanks for looking at it again.
I was referring to your earlier review rather than asking you to keep going.
You are right, with the list of loaded assemblies stopping recursion this
should do just what I want.
Thanks again.
Charles
"Jason Newell" <no****@nospam.com> wrote in message
news:eh**************@tk2msftngp13.phx.gbl... Charles, The endless loop can easily be adverted by keeping a list of Asssemblies that you've already loaded and not trying to load them twice. I just didn't have time to code it. Your requirement was to list all required Assemblies with their path, which is what this does. With the endless loop check implemented, shouldn't this be your final solution?
Jason Newell, MCAD Software Engineer
Charles Law wrote: Hi Jason
Great minds ... I tried making it recursive before I posted back last time, and hit exactly the same problem. It seems like there are circular references amongst the Microsoft assemblies, which is unfortunate.
Thanks for looking at it again.
Charles
"Jason Newell" <no****@nospam.com> wrote in message news:Ot**************@TK2MSFTNGP09.phx.gbl...
Charles, I'm a little closer with this next code. I'm busy at work so I can't finish it for you. Maybe this will help you get over the hump. I converted the PreloadAssembly() method into a recursive method so that it will traverse the Assembly structure. The problem right now is it gets into an endless loop. Need some check there to get out of the loop. Once you have an Assembly object, you can use the CodeBase property to determine where the assembly is being loaded from. HTH
Jason Newell, MCAD Software Engineer
############################################### ##################################### PreloadAssembly(Assembly.GetExecutingAssembly() );
static void PreloadAssembly(Assembly assembly) { Console.WriteLine(assembly.CodeBase);
AssemblyName[] assemblies = assembly.GetReferencedAssemblies(); foreach (AssemblyName assemblyName in assemblies) { Assembly referencedAssembly = Assembly.Load(assemblyName); PreloadAssembly(referencedAssembly); } }
############################################### ####################################
Charles Law wrote:
Hi Jason
Thanks for the response. I have converted and run the code you posted but I don't seem to be quite there yet. I think my problem can be explained as follows
I have a hierarchy of assemblies like this
MainApp -> SubAssembly1 -> SubAssembly2 -> SubAssembly3 -> SubAssembly4 -> SubAssembly5
If I list the referenced assemblies after preloading I get SubAssembly1, SubAssembly2, SubAssembly3, and SubAssembly5, but not SubAssembly4.
Can you think of a way to get at SubAssembly4? Also, I still don't seem to be able to identify where each assembly was loaded from.
Charles
"Jason Newell" <no****@nospam.com> wrote in message news:uf****************@TK2MSFTNGP12.phx.gbl.. .
>Charles, >I have a C# application that does something similar (I think) to what >you're wanting. I'll paste the specific code below. The code is in C# >but should be easily converted to VB.NET. HTH > >Jason Newell, MCAD >Software Engineer > > >############################################# ################################## >private static bool PreloadAssemblies() >{ >Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly(); > >AssemblyName[] assemblies = assembly.GetReferencedAssemblies(); > >foreach (AssemblyName assemblyName in assemblies) >{ >try >{ >Assembly.Load(assemblyName); >} >catch (System.IO.FileNotFoundException) >{ >MessageBox.Show( >"Assembly " + assemblyName.Name + " was not found.", >"File Not Found", >MessageBoxButtons.OK, >MessageBoxIcon.Error); >return false; >} >catch (System.BadImageFormatException) >{ >MessageBox.Show( >"Assembly " + assemblyName.Name + " is an invalid file image.", >"Bad Image Format", >MessageBoxButtons.OK, >MessageBoxIcon.Error); >return false; >} >catch (System.Security.SecurityException) >{ >MessageBox.Show( >"You do not have rights to assembly " + assemblyName.Name + ".", >"Security Error", >MessageBoxButtons.OK, >MessageBoxIcon.Error); >return false; >} >catch (System.Exception) >{ >MessageBox.Show( >"Assembly " + assemblyName.Name + " cannot be loaded.", >"Assembly Load Error", >MessageBoxButtons.OK, >MessageBoxIcon.Error); >return false; >} >} >return true; >} >############################################# ################################## > > > >Charles Law wrote: > > >>I'm sorry to keep harping on about this one, but it is really quite >>important for me to be able to list _all_ required assemblies in my >>Help About box. Herfried kindly posted some code before that lists >>_loaded_ assemblies and their version, but I have one assembly that is >>not loaded until the user has done something quite specific in the >>program, and I need to list this one too. Other applications seem to >>manage it, so I wonder how it can be done in .NET. >> >>Furthermore, the code I have at present does not locate the assembly. >>I also need to be able to do this so that I can be certain that all >>assemblies are being loaded from the right place. >> >>Can anyone help? >> >>TIA >> >>Charles >>
One possible problem with your approach is that you are loading the
assemblies into memory and there is no way to unload them.
You might wish to create an AppDomain and enumerate your assemblies
with that then you can call it's UnloadDomain method to unload any
assemblies that you loaded.
Chris
Hi Chris
That's a good point. Thanks for the tip.
Charles
"Chris Dunaway" <du******@gmail.com> wrote in message
news:11*********************@g14g2000cwa.googlegro ups.com... One possible problem with your approach is that you are loading the assemblies into memory and there is no way to unload them.
You might wish to create an AppDomain and enumerate your assemblies with that then you can call it's UnloadDomain method to unload any assemblies that you loaded.
Chris This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics
by: Thomas Miller |
last post by:
Hello,
I have built a c# class library (I will call it "Assembly1"), and
built an installer that installs it. It is working well. I created a
new asp.net application, right-clicked on references...
|
by: Afaq |
last post by:
Hi,
After adding large number of empty resource files (which will be updated
later), we are not able to compile the project. the following is the output
of the build process. It fails while...
|
by: Rico Hansen |
last post by:
Hi NG!
Does anyone know how to view all references in a listbox the same way when
clicking the "add reference"?
When clicking "add references" it's shown in a listview with Component name,...
|
by: vighnesh |
last post by:
Hi All
I am dealing a project in ASP.NET which uploads office documents and convert
them as PDF files,to accomplish this convertion
I have used a third party component named "easy PDF SDK".Every...
|
by: Graham |
last post by:
I have created a custom MembershipProvider called "LassieMembershipProvider"
that derives from "MembershipProvider". This providor is located in a
Businesslogic layer dll called...
|
by: Charles Law |
last post by:
I want to display the name and version of all assemblies (dlls?)
used/required by my application in a Help | About box. Is there a way to do
this?
One of the problems I anticipate is that...
|
by: prabhupr |
last post by:
Hi Folks
In CS project, we use "Add Reference" option to make reference to other
assemblies.
At times, there a is a chance that few of them get added by mistake or
must have got added for...
|
by: =?Utf-8?B?TUNN?= |
last post by:
The following sections appears in my web.config file.
<configuration>
<system.web>
<compilation>
<assemblies>
<add assembly="System.Core, Version=3.5.0.0, Culture=neutral,...
|
by: necro1000 |
last post by:
Hi,
I have created a new project and have used the CrystalReports assemblies and the Microsoft Interop dlls. I copied my program to another PC and when I try to run the methods that use these...
|
by: Hystou |
last post by:
There are some requirements for setting up RAID:
1. The motherboard and BIOS support RAID configuration.
2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
|
by: marktang |
last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
|
by: Hystou |
last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
|
by: jinu1996 |
last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
|
by: Hystou |
last post by:
Overview:
Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
|
by: agi2029 |
last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...
|
by: TSSRALBI |
last post by:
Hello
I'm a network technician in training and I need your help.
I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs.
The...
|
by: 6302768590 |
last post by:
Hai team
i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated ...
|
by: muto222 |
last post by:
How can i add a mobile payment intergratation into php mysql website.
| |