Deployment Involving DLL References And Global Assembly Cache (GAC)
Jun 19, 2009
I created a Windows Application using VB.NET 2005 Express Edition.In my project I have two references to DLLs from a 3rd part product, so that I could access its API (Ascent Capture 7.5 from Kofax if you needed to know).For the two references, I have set the Copy Local property to False, and in the app.config file I am using assemblyBinding to reference one of the DLLs.When I build the application and then execute the EXE file in the inRelease folder, everything works fine. When I do a publish and try to run the setup.exe application that is created, I get an error message that basically states the DLL I referenced in the app.config file needs to be installed in the GAC.So why does my application work fine from the Release folder without having to do anything to the GAC, but I cannot install using the setup.exe from the Publish? I would like to use the setup.exe because I need to install this on other machines than my own.
When running setup to install published program, the following message occurs: System Update Required: Unable to install or run the applicaiton. The application requires that asssembly CrystalDecisions.CrystalReports.Engine Version 10.2.3600.0 be install in the Global Assembly Cache (GAC) first. This version is listed in the references of the program and in my mind, be included in build. How do I get by this error?
When running setup to install published program, the following message occurs: System Update Required: Unable to install or run the applicaiton. The application requires that asssembly CrystalDecisions.CrystalReports.Engine Version 10.2.3600.0 be install in the Global Assembly Cache (GAC) first. This version is listed in the references of the program and in my mind, be included in build. How do I get by this error?
If you build and deploy UserControls, Components etc do you give them strong names and put them in the GAC or do you simply place them in the same folder as the executable?I've made a component that will be given to other developers and they will, in turn, deploy it with their own applications. If I give my component a strong name and install it into the developer's GAC then I assume that the developer using my component will also need to place it in 'his' customer's CAG when he deploys his own application containing my component.
I have been able to deploy my project on a CD with ClickOnce. Since updating to 3.5 SP1 the following error occurs when distributing the project on PC with Windows XP. Although it will load on another PC with Vista.Unable to install or run application. The application requires that assembly System Data Entity Version 3.5.0.0 be installed in the Global Assembly Cache (GAC) firstMy project property settings: Prerequisites, Windows Installer 3.1, Net Framework 3.5 SP1 both checked and Download Prerequisites from vender
I have sent out software created with VB2008 Express and everything has installed correctly on my PC which is running windows vista. But they can't get it to install, one is running XP the other Vista, they get the following errors
Windows XP
Microsoft.VisualBasic.Powerpacks.Vs Version 9.0.0.0. to be installed in the Global Assembly Cache
Windows Vista
system.windows.forms.data visualization version 3.5.0.0 be installed in the global assembley cache first
I have a function GetAllProducts() which fetches all products from a database and stores it in the cache for future requests. This works fine, but if I then call the function e.g. ProductSearchResults = GetAllProducts(), and then modify ProductSearchResults variable, this also modifies the cache, which is very important this never happens, as the cache affects the whole website.
I understand this is because both ProductSearchResults and the cache now have the same reference, but how do I solve the problem? Is there something that I can put in GetAllProducts() to ensure the cache always uses its own value?
I have 2 dll files from a third party, and they have the same name (v7 and v8). My program needs to be able to use both of these dll's (meaning wether the enduser has a lisence for v7 or v8 of the thirdparty dll, they can still use the program). But I am stopped from referencing both of them as they have the same name. How do I resolve this? Searched the web and found info about sn.exe and strong names, but can't find a good explanation of how this works. Anyone?
I have written a .net assembly which plugs into to a third party COM application. The .net assembly is COM visible to the third party application. However this .net assembly references other regular assemblies. If I put these assemblies in the GAC the COM visibile assembly sees them without a problem. However for various reasons I do not want to put them into the GAC but I cannot get my COM visible assembly to see the other assemblies when they are in other locations. I have tried putting them in the same directory as the COM visible assembly. I have tried putting them in the same directory as the third party app's exe but neither of these work.
I am building a dll-Assemby A which references another Assembly B. Assembly B is strongly named and installed in the GAC of my development computer. An other computer will not have assembly B installed in the GAC.
Question: If i handle strongly named assembly B like a private assembly and copying it into the bin-directory by specifying local copy = true in the properties-window, will the programm run on the other computer?
I've got a problem with a program that references a third party ActiveX component that I've been refused permission to distribute. The AX component is used on some user defined controls which the user can add programatically, which makes isolating them fairly easy. However, the problem is that if the program is installed on a machine without the third party component then it just crashes, where I would much prefer it to just alert the user to the missing component and then disable the functionality that requires the component.
In the past I've tried adding the reference programatically but have found that this solution doesn't work with this particular control.
So I created an application with vb.net, I added Messenger type Api in preferences, compiled my program and everything was fine. However I can't run the program from other directories. It says that the .dll is missing. I'm trying to include the .dll to the program somehow - no success, how that should be done? Friend tried to help me and said I should add "Application block" something to the references. I can't find that though.
I can add dll file in global assembly through making a complete setup but know i want to add dll in to global assembly through code dose any one knows how it can be done.
i am writing a simple games client using an XNA 2.0 engine to play games. The games are written in dll files and the client uses the assembly.loadfrom method to read and execute the games accordingly...Now this all works fine on my computer and my laptop. However when i give it to my friend he gets this error and the dll doesnt load - "Unable to load one or more of the requested types. Retrieve the loader exceptions property for more information"
I have the following code in my config.vb file in app folder and almost all of my pages use this code for permormance issues i need to have it cached for exp use cache.insert to cache each property How should i use caching?
I have Crystal Reports 2008 installed on my win7 laptop but when i go to insert references from my application settings the CrystalDecisions references are missing and im not able to find them. Note: they do exist in my "c:windowsassembly" folder.
evrytime i add new controls to a form in vb.net the designer regenerates code and asks me to make corrections, so i have to keep on changing the object declarations to global using the 'global' keyword evertime it regenarates code,especialy dataset objects.how can i prevent this?
i could use Global x as string in vb6 in a module to declare it with global privelages, how can i do this in vb2008? how to declare a global variable in vb2008? so that i could use it anywhere i want. i know global variables are not recommended in programming but i need one.
I have this code and I know that this part "WHERE dbo.tblenrol.SectionName=dbo.tblSection.SectionName)" of the code not right... I want to update the my tblenrol.Adviser from tblTeacherFile.Adviser if the tblenrol.SectionName is equal to tblSection.SectionName...How do I do it??
Using cmdUpdate As New SqlCommand("UPDATE tblEnrol " & _ "SET tblEnrol.Adviser = (SELECT dbo.tblTeacherFile.Adviser " & _ "FROM dbo.tblTeacherFile " & _[code]......
I am making a program that takes files (inside their folders) and copies them into a selected file path. For example, I plug in my jump drive, run my program and it copies my files on the jump drive over to my PC. Now my program does this but it takes the files inside each folder in my jump drive instead of creating a folder for each one in my jump drive. The result is a mess of files in the selected pathway in my PC.I went and created variables in My.settings so that you can save the file path even after you close the program. I just want the program to copy the folders(with the files in each folder) in my jump drive and move them over to my PC.I am using this program copy the files from my jump drive over to my PC, because I save a lot of work on my jump drive and I need to back it up often. [code]
The bigger problem is that I can't seem to get everything involving using stream writer and reader working. If I start of with a .txt file already correctly formatted then I can display it in the list box. But adding data during run time is not proving successful.
i'm new to this site and i'm hoping there's someone out there that can help me with this problem. I'm doing a course in visual basic 2010 and having real trouble understanding some aspects of it. Here goes -
I need to do a validation check on a users inputed string. The users input is called Test_data and it needs to be exactly 10 characters long and must only use the letters " a " to " f "
I know to check that the string is exactly 10 characters long by the Len function, and i have that working.BUT - how do i check whether the users inputed string uses the letters a to f ? I thought it would involve something to do with ASCII, but i would have no idea how to form a validation check using ASCII.
I would like to read each line of text from the file outputted from this block.Each line is then used with the service controller to output a list of services running on that computer.
Dim de As New DirectoryEntry() 'Name place to write file to Dim strFile As String = "C:DomainUsers.txt"
I have recently upgraded an VB6 project to vs2008. I was almost finished when the following error occured. Unable to emit assembly: Referenced assembly AxInterop.MSFlexGridLib does not have a strong name Prior to this error appering, I tested my app several times and it was fine. Only after publishing it did the error appear. I have tried all solutions I could find, but nothing helps. I have read [URL]
sAssemblyName is the one I loaded using LoadFrom() actually. After it said it cannot find the assembly, I used AssemblyResolve event which solved my problem :Subscribing AssemblyResolve event :
Private Shared Function MyResolveEventHandler(ByVal sender As Object, _ ByVal args As ResolveEventArgs) As Assembly Return Assembly.LoadFrom("C:\PSIOBJ\" + args.Name + ".dll") End Function
And I thought maybe the error occurs because it cannot find a dependent assembly defined in assembly manifest file I loaded using LoadFrom() already but when I checked the args.Name, I saw it was trying to load same assembly and after that it worked without any problem. So basically a type in the loaded assembly cannot be found before the event adding change.
My old code was using AppDomain.CurrentDomain.Load() and Assembly.Load() methods and they were working fine without the AssemblyResolve event. I was able to reach types in dynamically loaded Assembly from every where within the same AppDomain.
LoadFrom() can find dependencies automatically within the same requested assembly path and that couldn't be problem as everything this dll needs was there. So at first it looked like a AppDomain problem to me as it looks like it seems it can reach assemblies from Load context instead of LoadFrom context and I am now using LoadFrom context.But now it seems I should pass oAssembly instance evertwhere to use any type from the loaded assembly?Doesn't it load the assembly where I can reach it everywhere (same AppDomain) using simple Type.GetType(...) method?
My application need to communicate with my self made device through serial port. I have to change the selected index of Tabs when I press a button on my device. I have Form1, Form2, Module1 Form1 Contains the Serial Port Control. Form2 contains the Tab which needs to be changed. When I press a button on device them, the button pressed is stored in an integer form in a global variable.The Interrupt for the Serial Port directs the control to the module1 where I decide using Select Case that what index of which TabControl I have to select.Depending on that, I change the Index of the required Tab.
PROBLEM:cross thread exception is fired as soon as the control reaches the statement where I Modify the SelectIndex property from the select case at Module1.While, on my other PC, the SelectIndex property is changed, but the next tab is not shown.
BUT, if I put all this code in a button control, and try to activate from there, then it works perfectly. However, I have to navigate through the tab controls using my self made device.I searched a lot on net and came across a solution which describes that we have to use delegate function and invokeRequired methods to ensure that the procedures run on the same thread.I am not able to decide that where exactly shoud the code for delegates and all be written, in form1, or form2, or module1.Also, in the hit and try that I did, I always got the value of InvoleRequired as False.
Here is the part of Code that I wrote for Delegates
Code:
'Form 1 is BLINDHELPER_SIGNIN 'form 2 is BLINDHELPER_USER
' I have defined these at Module1
Public Delegate Sub DeleToManageTabs(ByVal tb As TabControl) Public Sub manage_Tabs(ByVal tab As TabControl) MsgBox(tab.Name)
[code]....
After using this code also, there is no change in working of my application.
I'm wanting to include a system tray icon in my WPF project, and found this resource:[URL]..which looks like it will work beautifully, but it's written for C# and I'm using VB.net for this project. I downloaded his project and built the notifyicon as a DLL, then added as a reference to my project.
It throws up an error: Unable to emit assembly: Referenced assembly 'Hardcodet.Wpf.TaskbarNotification' does not have a strong name So I'm trying to figure out the best way to proceed. Do I need to strong name it, or is there a better way to do this?
I've got an exception when I deployed my application: "the located assembly's manifest does not match the assembly reference" What I remember is changing the project name from the previous source code, does it affect that much?