473,597 Members | 2,459 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

VB.NET Assembly Compatability

Nak
Hi there,

I was wondering if anyone knew of a way to maintain compatability with
assemblies providing the interfaces remains the same? At the moment if I
re-compile an assembly without actually changing an interface it breaks
compatability, forcing all of my consuming assemblies to need recompiling.
I know this could be done with VB6, what about .NET?

Nick.
Nov 21 '05 #1
6 1665
If you are sure that you are not breaking compability (VS.NET, on the
contrary to VB6, does not offer yet a tool to verify this), you need to keep
the value of the AssemblyVersion attribute of the AssemblyInfo.vb file,
because by default it is changed on each build:

<Assembly: AssemblyVersion ("1.0.*")>

So, change it to, say:

<Assembly: AssemblyVersion ("1.0.0.0")>

and don´t change it until you break compatibility.

You should also add another attribute that is not added by default:

<Assembly: AssemblyFileVer sion("1.0.0.5") >

which is the classic Win32 file version (shown in Windows Explorer), not the
assembly version (shown in GAC viewer), and you change this on each build,
to be able to distinguish each build now that the assembly version is the
same (if ommited, the assembly file version is set to the assembly version).

--

Carlos J. Quintero

MZ-Tools 4.0: Productivity add-ins for Visual Studio .NET
You can code, design and document much faster.
http://www.mztools.com
"Nak" <a@a.com> escribió en el mensaje
news:%2******** ********@TK2MSF TNGP09.phx.gbl. ..
Hi there,

I was wondering if anyone knew of a way to maintain compatability with
assemblies providing the interfaces remains the same? At the moment if I
re-compile an assembly without actually changing an interface it breaks
compatability, forcing all of my consuming assemblies to need recompiling.
I know this could be done with VB6, what about .NET?

Nick.

Nov 21 '05 #2
Nak
Hi Carlos,

Excellent! Cheers.

Nick.

"Carlos J. Quintero [.NET MVP]" <ca*****@NOSPAM sogecable.com> wrote in
message news:O$******** ******@TK2MSFTN GP14.phx.gbl...
If you are sure that you are not breaking compability (VS.NET, on the
contrary to VB6, does not offer yet a tool to verify this), you need to
keep the value of the AssemblyVersion attribute of the AssemblyInfo.vb
file, because by default it is changed on each build:

<Assembly: AssemblyVersion ("1.0.*")>

So, change it to, say:

<Assembly: AssemblyVersion ("1.0.0.0")>

and don´t change it until you break compatibility.

You should also add another attribute that is not added by default:

<Assembly: AssemblyFileVer sion("1.0.0.5") >

which is the classic Win32 file version (shown in Windows Explorer), not
the assembly version (shown in GAC viewer), and you change this on each
build, to be able to distinguish each build now that the assembly version
is the same (if ommited, the assembly file version is set to the assembly
version).

--

Carlos J. Quintero

MZ-Tools 4.0: Productivity add-ins for Visual Studio .NET
You can code, design and document much faster.
http://www.mztools.com
"Nak" <a@a.com> escribió en el mensaje
news:%2******** ********@TK2MSF TNGP09.phx.gbl. ..
Hi there,

I was wondering if anyone knew of a way to maintain compatability with
assemblies providing the interfaces remains the same? At the moment if I
re-compile an assembly without actually changing an interface it breaks
compatability, forcing all of my consuming assemblies to need
recompiling. I know this could be done with VB6, what about .NET?

Nick.


Nov 21 '05 #3
Nak
Hi there,

Thinking more about this solution it doesn't seem as nice as I had first
thought. I would like to keep automatic versioning as I've relied on it for
quite a while now, and actually remembering to change the version number
when an interface changes will bound to be too risky for me. So I hunted
around some more and found that the app config file can solve this issue,

<?xml version="1.0"?>
<configuratio n>
<runtime>
<assemblyBindin g
xmlns="urn:sche mas-microsoft-com:asm.v1">
<dependentAssem bly>
<assemblyIdenti ty name="myshareda ssembly"
publicKeyToken= "mysharedassemb lykeytoken" />
<bindingRedirec t oldVersion="1.0 .0.0-1.0.99999.99999 "
newVersion="cur rentversion" />
</dependentAssemb ly>
</assemblyBinding >
</runtime>
</configuration>

So now I can keep compatability while retaining automatic versioning.

Nick.

"Nak" <a@a.com> wrote in message
news:O%******** ********@TK2MSF TNGP11.phx.gbl. ..
Hi Carlos,

Excellent! Cheers.

Nick.

"Carlos J. Quintero [.NET MVP]" <ca*****@NOSPAM sogecable.com> wrote in
message news:O$******** ******@TK2MSFTN GP14.phx.gbl...
If you are sure that you are not breaking compability (VS.NET, on the
contrary to VB6, does not offer yet a tool to verify this), you need to
keep the value of the AssemblyVersion attribute of the AssemblyInfo.vb
file, because by default it is changed on each build:

<Assembly: AssemblyVersion ("1.0.*")>

So, change it to, say:

<Assembly: AssemblyVersion ("1.0.0.0")>

and don´t change it until you break compatibility.

You should also add another attribute that is not added by default:

<Assembly: AssemblyFileVer sion("1.0.0.5") >

which is the classic Win32 file version (shown in Windows Explorer), not
the assembly version (shown in GAC viewer), and you change this on each
build, to be able to distinguish each build now that the assembly version
is the same (if ommited, the assembly file version is set to the assembly
version).

--

Carlos J. Quintero

MZ-Tools 4.0: Productivity add-ins for Visual Studio .NET
You can code, design and document much faster.
http://www.mztools.com
"Nak" <a@a.com> escribió en el mensaje
news:%2******** ********@TK2MSF TNGP09.phx.gbl. ..
Hi there,

I was wondering if anyone knew of a way to maintain compatability
with assemblies providing the interfaces remains the same? At the
moment if I re-compile an assembly without actually changing an
interface it breaks compatability, forcing all of my consuming
assemblies to need recompiling. I know this could be done with VB6, what
about .NET?

Nick.



Nov 21 '05 #4
If you have the control over the apps that call your assembly that approach
will work too, but there are scenarios where you don´t know or control all
the applications that call your assembly, so you would use the other
approach in those scenarios...

--

Carlos J. Quintero

MZ-Tools 4.0: Productivity add-ins for Visual Studio .NET
You can code, design and document much faster.
http://www.mztools.com
"Nak" <a@a.com> escribió en el mensaje
news:%2******** ********@TK2MSF TNGP15.phx.gbl. ..
Hi there,

Thinking more about this solution it doesn't seem as nice as I had
first thought. I would like to keep automatic versioning as I've relied
on it for quite a while now, and actually remembering to change the
version number when an interface changes will bound to be too risky for
me. So I hunted around some more and found that the app config file can
solve this issue,

<?xml version="1.0"?>
<configuratio n>
<runtime>
<assemblyBindin g
xmlns="urn:sche mas-microsoft-com:asm.v1">
<dependentAssem bly>
<assemblyIdenti ty name="myshareda ssembly"
publicKeyToken= "mysharedassemb lykeytoken" />
<bindingRedirec t oldVersion="1.0 .0.0-1.0.99999.99999 "
newVersion="cur rentversion" />
</dependentAssemb ly>
</assemblyBinding >
</runtime>
</configuration>

So now I can keep compatability while retaining automatic versioning.

Nick.


Nov 21 '05 #5
Nak
Hi there Carlos,
If you have the control over the apps that call your assembly that
approach will work too, but there are scenarios where you don´t know or
control all the applications that call your assembly, so you would use the
other approach in those scenarios...
ACK and appreciated. But I'm just using it to control plugins to help
prevent them from having to be recompiled every time my application
framework changes.

Probably in hindsight I would have drastically modified the way my
Framework is structured but unfortunately at the moment I need to assure
that the plug-ins will at least attempt to run. Maybe I could also check
what version they are compiled against and give the user the ability to only
use 100% upto-date plug-ins but maybe this gives a little too much control!

By the way, it's good to see you in this group, I remember using your
MZ-Tools for VB6, valuable asset that was!

Nick.

"Carlos J. Quintero [.NET MVP]" <ca*****@NOSPAM sogecable.com> wrote in
message news:Of******** ******@tk2msftn gp13.phx.gbl...

--

Carlos J. Quintero

MZ-Tools 4.0: Productivity add-ins for Visual Studio .NET
You can code, design and document much faster.
http://www.mztools.com
"Nak" <a@a.com> escribió en el mensaje
news:%2******** ********@TK2MSF TNGP15.phx.gbl. ..
Hi there,

Thinking more about this solution it doesn't seem as nice as I had
first thought. I would like to keep automatic versioning as I've relied
on it for quite a while now, and actually remembering to change the
version number when an interface changes will bound to be too risky for
me. So I hunted around some more and found that the app config file can
solve this issue,

<?xml version="1.0"?>
<configuratio n>
<runtime>
<assemblyBindin g
xmlns="urn:sche mas-microsoft-com:asm.v1">
<dependentAssem bly>
<assemblyIdenti ty name="myshareda ssembly"
publicKeyToken= "mysharedassemb lykeytoken" />
<bindingRedirec t oldVersion="1.0 .0.0-1.0.99999.99999 "
newVersion="cur rentversion" />
</dependentAssemb ly>
</assemblyBinding >
</runtime>
</configuration>

So now I can keep compatability while retaining automatic versioning.

Nick.

Nov 21 '05 #6
"Nak" <a@a.com> escribió en el mensaje
news:%2******** ********@TK2MSF TNGP10.phx.gbl. ..
By the way, it's good to see you in this group, I remember using your
MZ-Tools for VB6, valuable asset that was!


I have spent the last 3 years or so in forums and newsgroups about .NET
add-ins, and I became MVP for that, I will try to spend more time in general
..NET groups. Now you have MZ-Tools 4.0 for VS.NET, no longer free but quite
cheap, if you want to take a look. I remember that I had the same problem
that you because now the mztools4.dll assembly exposes its API to plug-ins
to provide operation extensions (yeah, plug-ins for a plug-in of VS.NET !)
and since mztools4.dll is not an exe, it can not use a config file, so I
have to use the approach that I suggested, keeping the AsssemblyVersio n
constant while maintaining backwards compatibility.

--

Carlos J. Quintero

MZ-Tools 4.0: Productivity add-ins for Visual Studio .NET
You can code, design and document much faster.
http://www.mztools.com


Nov 21 '05 #7

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

0
1681
by: Ken Durden | last post by:
I'm working on a client-server application where the client is controlling two devices (aka servers) which both implement the same interface contract. We have a set of about 4 assemblies which specify the interfaces and the data types which flow through the interfaces. Initially, we thought this would be enough for the client to talk with the server. In general it is, but when an exception is generated by the server it fails to...
4
1394
by: WStoreyII | last post by:
I know that the main two browsers are ie and netscape. However, how do i know if browsers like aol and other abstract browser put out by isps like sbc and earthlink are compatable with asp.net. I would hate to make web pages that can not be viewed by customers using these mediums as most people who use computers in a more entertainment light use these generic browsers. WStoreyII
0
1114
by: SenthilVel | last post by:
hi I have my application built with Dotnet Framework 1.1 and now i can see most of clients having both the versions 2.0 and 1.1 in their systems, i get an issue when i run my 1.1 application . what r the ways to achieve the forward compatability for 1.1 developed applications ? i know we can use the <strartup><supportedruntime> in the app.config ..
1
1760
by: abbu | last post by:
Hi, Can anybody explain the difference between standard and compatability mode compilatin in C++? Regards, abbu
0
1347
by: David | last post by:
I am trying to migrate a .net 1.1 Web Application to a 2.0 Web Application. I am experiencing issues when putting a strongly typed dataset into session, and then navigation to a page where aspcompat is set to "true". I can reproduce the problem by creating a brand new web site project in VS2005, and creating a new page where I set aspcompat=true. Then i create a new named dataset class in solution explorer. I add an instance of this...
3
2190
by: Rich | last post by:
I put together a simple test class libary (VB2005) with one class and one function that takes an integer argument and adds 10 the argument and returns that number. Then I created a simple VB2005 app to test my class library function. I made a reference to testClassLib.dll in the new project. Then I made a function calls in a button sub and wrote the results to the console. This worked fine. Now I am trying to add a reference to a...
1
1337
by: internet.system.error | last post by:
Hello, I write the casual Java code, and to make life easier at work I´ve decided to write a C# application that reads two excel files and does the usual number crunching and spits out a new file. However, I´m not really familiar with C# nor Visual Studio so before buying an expensive programming environment, I´d like some advise.... The computer running the application has Windows XP Professional & Excel 2002. The computer where I...
1
3699
by: jsmall | last post by:
Hi, We currently have a fairly old product, which was originally only compatible with SQL 2000. When we upgraded our server to SQL 2005, the client product gave us a "This product is not compatible with this version of SQL server" error. We put the server into SQL 2000 compatability mode, and things worked.
10
2171
by: Bobby | last post by:
Hi, The organisation I work for is on the verge of buying Microsoft Office 2007 Pro Plus OLP NL. We currently use Office Pro 2003. Our business system is written in Access 2003 with a SQL Server back end. I've heard that it's possible that the version of Office we are buying may have compatability issues with Access 2003. I find this hard to believe, but does anybody know anything about this? Thanks
0
8276
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
0
8381
jinu1996
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 tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
1
8040
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 Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
0
8259
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
0
5436
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
0
3932
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
1
2408
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 we have to send another system
1
1495
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.
0
1243
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.