We are a group of users of Blackbaud products and are not affiliated with Blackbaud. We'd love to have you join our community to help and be helped in getting the most from your Blackbaud software.
Register now to join us to get independant advice on your system, connect with 3rd party consultants to help you maximize your database and have a real alternative to the official Blackbaud website.
I have to use the API with .NET on version 7.71 of Raiser's Edge. In 7.8 Blackbaud supplied the primary interop assembly folder (PIA) with the interop that you can use.
However for 7.71 there is no PIA supplied. There is a KB article about how to create one but looking at the MS site:
When choosing whether you should reference the REAPI dll directly or build it yourself it says:
Quote:
If you did not write the COM component, neither one of these methods is acceptable. That's because you are not allowed to sign code written by another developer. What you need to do in that case is obtain a Primary Interop Assembly (PIA) from the original developer of the component.
The BB solutions (BB200505, BB121061, BB210789) do suggest that you create a signed key for the code so that it can be shared between different projects.
Does anyone know what the implications of this are? I have done this previously without a key and it seems to work but I am not certain what problems there would be if I did not create a key. Does this affect deployment?
So I have found out some more information that probably answers my own question:
First the PIA is included with v7.71. I thought it only came with 7.8.
The reason why Microsoft says that you should not sign code written by another developer is because of compatibility issues. If you plan on using your application at another organisation for example and they have an interop assembly of the same name it will not be compatible. The PIA version takes precedence. This is why it is always advisable to use the manufacturers version. However normally when you build the interop yourself it is because you are doing so to use in your own organisation and do not have plans to share your applications with others.
As for signing the assembly, this is useful if you want to put the assembly in the GAC (Global Assembly Cache). This enables you to share your assembly - i.e. .NET version of Raiser's Edge API between applications. For more info about the GAC see. Demystifying the .NET Global Assembly Cache - The Code Project - .NET
Thanks for Ron Frum for some of the above information.