I'm building a dll(c# assembly which implements some interfaces) that's called by another app. the dll built on my machine works but the one built on our build machine does not work. I have very little control on that app and can not debug it, I can only see the output of it. Is there any way to check the differences of the dlls? I have used reflector, but it only shows limited info like classes and methods.
I also tried building it on other machines with vs2005, xps can create correctly, server 2008 and win7 can not.
could you guys help me with it? any help would be appreciated. If I was not clear, please let me know.
Thank you!
Since you didn-t tell us the error-symptoms of "does not work" here is my guess formulated as a question:
Does your dll reference other dlls that are installed in global-assembly-cache? do all build machines have the same version of the gac-dll installed?
Related
I tried to import a winform solution file from VS code (windows) to monodevelop (Linux) but it failed. The error is as follows:
Error while trying to load the project '/home/virtuall_kingg/Camera_GUI/Camera_GUI/Camera_GUI.csproj':
File not found: /home/virtuall_kingg/Camera_GUI/Camera_GUI/Camera_GUI.csproj
I added Camera_GUI.csprojfile also but still the error is same.
Can anybody guide me on how to import solution to mono?
This winform project has become pain in my neck.
Is building the GUI using gtk# in Ubuntu from scratch is the only way?
EDIT: Now you can substitute mono with .NET 5, the common .net framework for all platforms.
You are asking multiple questions here. In Linux you have (limited) support for WinForms through Mono. Depending on how complex is your project, you could port it without modification. If there are p/Invokes, then you won't for sure be able to port it.
Yep, in Linux the "other" big option is Gtk#, which has a long history. If you would want to port the project starting from scratch, it'd be a good option, but it'd involve porting your classes from working with WinForms to Gtk#, which is not impossible, but not trivial either. The feasibility of this would mainly depend on how good that project is architected. Do you have bussiness logic and views separated? If the answer is no, then the process will be tedious, and as hard as lengthy.
MonoDevelop is an IDE for C#, and Visual Studio for Mac is roughly MonoDevelop. It certainly works in Linux... as well as Visual Studio Code. So, there is no need to change anything in that front if you just need to port your code to Linux.
Okay, now, what's the road to follow? I think the best one is to try Mono with WinForms. It'd maybe involve simplify some code in the user interface part, but is certainly feasible. Just remember that you need to install Mono, and if your project is set to target .NET Core, then you need to create another project from scratch and set it to target .NET Framework.
Now, the specific question is that MonoDevelop complains about a missing Camera_GUI.csproj. This means that you've only picked a few files, but not the whole solution. Any IDE (Visual Studio, Visual Studio Code, Rider...), would complain about the same thing. Either remove the project from the solution, or add the project with all its files to the directory in which the solution sits.
So, the answer is: don't change anything if you don't need to retarget your project. Just move to a Linux box or virtual machine, with the whole project and open it in Visual Studio Code Rider, Rider, or MonoDevelop it does not matter. From within the IDE, remove those projects that make no sense in Linux (i.e., windows installer), and then recompile and start the program. Polish those parts of the user interface that need tweaking and that's it.
Should you need more help, please be more specific and provide more info.
Greetings and Salutations,
I am looking to embed CLIPS in a .net application (via C#) and I am using two DLLs; CLIPSNet.dll and CLIPSLib.dll
When I try to run the program, it appears that the CLIPSNet.dll is assimilated successfully, but when it reaches to the CLIPSLib.dll, I get errors complaining about the architecture the DLL was compiled in (x86 instead of the expected x64).
I found several threads from several years ago that usually ended with the suggestion to recompile the source and it will work fine.
I do not have the facilities to recompile the source code myself, and a colleague of mine tried to do it for me and he encountered numerous errors in the source.
If anyone in the community has successfully recompiled the CLIPSLib.dll in the x64 architecture, could I impose upon you to please provide a link to the DLL or please email it to me?
Thank you very much, in advance!
Cheers,
Chief_Ed
I have made a C# class library, which uses other dll's made by others in the company, for COM interop. It is being used with MS Excel 2013 and works fine on my development machine.
To test it on other machines, i have copied the output (dll's and .tlb file) to my system 32 folder. I have then registered the dll's using regasm (using the /codebase argument). Finally, i added the reference to the .tlb in the Excel VBA editor. Allthough it is a little tedious with 6 dll's, the regasm works fine.
The next step is to distribute the Excel sheet to relevant users in the company, where most are located in different parts of the world in different deparments. This means i do not know what programs that are installed that are needed(for example .net 4.5). Also, since most people in the company know little about the command line, using the above procedure is not only a little tedious, but scares people. I therefore would like to make an installer.
Since i use VS2013, i have installed a plug in that allows me to make a setup file.
I have found this question, which is almost the same as mine, but i don't need the GAC part. How do i modify the procedure to my needs? - i have tried to follow the procedure given, but i get an error stating one of the dll's i use in my own, does not have a strong name and cannot be in the GAC. Build therefore fails. How do i rectify the above? - do i need to fix the dll or can i do this without the GAC-part?
How do i automate the installation process of my dll(s)? - The alternative right now is to roll out VS2013 to the users and make them run the project and register that way (Does VS express suffice?).
Thanks in advance - i started this project with little experience, so learning curve is a bit steep.
It's not clear to me exactly what you want to do, but that link does tell you how to register Dlls - just look at the properties of each Dll and set the register property. You can also add your tlb file to your setup, and mark that to be registered too. If that isn't what you're trying to do then edit the question.
p.s. Don't put tham in the system folder - pout them in your company's/app's common files folder.
I create *.xll with XLW lib. But it work only on build computer. If i rebuild my project on other computer xll work on it, but not my computer. Anybody have idea from this problem.
This sounds like a classic case of you needing to deploy the runtime libraries of your tools to the machines which run the software. Your dev machines will have the necessary runtimes already. Exactly how to do that depends on which compiler you are using. The quick and dirty approach would be to link statically to the runtime.
If you use http://xll.codeplex.com the default is to link with static libraries. Should work on any machine.
My program is written in C# NET 2.0,it's using external functions from a dll written in C++ using Microsoft Visual Studio 2008 SP1.
If I remove the dll from the directory the program is placed,the program crashes at the moment it should use the dll.That's normal.
But the users that are using my program get the same error at the same place without moving the dll.They all have C++ Redistributable 2008 from >here<
Does it happen because I made the program in .NET 2.0 instead of NET 3.5 or it happens ,because the redistributable should be an older version?
Edit:Note for me,the program runs fine.
>>new thread<<
Its most likely the wrong runtime. Make sure you are distributing the correct one. These will always work on your dev box because the runtimes are in the path. For testing software, I use a windows xp virtual machine. I set up the virtual machine as a completely fresh install, install the components I know that I need (.NET framework, etc.), then run my installer. You will run into a surprising number of setup issues doing this.
The C++ Redistributable that you linked to looks like it is from the original release of Visual Studio 2008. If that changes with SP1, I could see that causing the crash. Maybe there is an updated version of the redistributable that your users need to install?
There's preciously little information in your question about the actual crash which could mean any of many things. In my experience with mixing .NET and native C++, many issues can occur in the side-by-side (SxS), especially if the DLL and the .NET application were built with different versions of the compiler.
You probably need to reproduce this problem on a local machine to debug it.
Dependency Walker can be excellent for tracking down these sorts of problems. You can load a DLL into it and it will tell you if any of its dependencies are unavailable. Sometimes missing DLLs are not necessarily a problem (if you do not go down that code path), but it is so much better than guessing.
No difference in this context of using .NET 2.0 or 3.5.
Look in method where you link and export functions from C++ (if it unmanaged)
If external functions had written on managed C++, look into signing and version of dll's