Gemini Community Support Site

This Gemini community support site can be used to find solutions to product issues. You can log in using Open Id, Google Profile and even Facebook. Feel free to ask a question or browse FAQs and documentation. Product tour videos are also available along with how-to videos demonstrating key Gemini capabilities.




Problem with Gemini Event Listener API

web-app

Hi,

We use Gemini 2.1.1

We must implement a listener to synchronize Gemini with our TFS server.

First remark: The documentation doesn’t seem to be update… as geminiLib.dll doesn’t exist anymore.

So we use CounterSoft.Gemini.Commons.dll (version 2.1.1.37892).

We make a very simple program to test Event Listener API… but we can’t manage to get it work.

We compile it with visual studio 2005 as a Net 2.0 class Library.

We deploy the assembly in bin\plugins; we try this 2 options :

- without CounterSoft.Gemini.Commons.dll, we’ve got :
Could not load file or assembly 'PlugInGemini, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.

   at System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)     at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)     at System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)     at System.Reflection.Assembly.Load(String assemblyString)     at System.UnitySerializationHolder.GetRealObject(StreamingContext context)       at System.AppDomain.Load(String assemblyString)     at CounterSoft.Gemini.Business.GeminiEventDispatcher.LoadPlugins(String strPath)

-  With CounterSoft.Gemini.Commons.dll :
Cannot create an abstract class.   at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck)     at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache)     at System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache)     at System.Activator.CreateInstance(Type type, Boolean nonPublic)     at CounterSoft.Gemini.Business.GeminiEventDispatcher.LoadPlugins(String strPath)

 

What is wrong ?

Thank you for help.

Here the code :

public class MyGeminiPlugIn : IIssueListener //AbstractIssueListener

    {

        // Fields

        private string m_strDesc;

 

 

 

        public MyGeminiPlugIn()

        {

            GeminiHelper.LogMessage("[MyGeminiPlugIn]ctor");

            System.Diagnostics.Debug.WriteLine("[MyGeminiPlugIn]call ctor");

        }

 

 

        public void IssueCreated(IssueEventArgs args)

        {

            System.Diagnostics.Debug.WriteLine("[MyGeminiPlugIn]call IssueCreated");

        }

 

        public void IssueUpdated(IssueEventArgs args)

        {

            GeminiHelper.LogMessage("[MyGeminiPlugIn]IssueUpdated");

            System.Diagnostics.Debug.WriteLine("[MyGeminiPlugIn]call IssueUpdated");

        }

 

        public void IssueAssigned(IssueEventArgs args)

        {

            System.Diagnostics.Debug.WriteLine("[MyGeminiPlugIn]call IssueAssigned");

        }

 

        public void IssueClosed(IssueEventArgs args)

        {

            System.Diagnostics.Debug.WriteLine("[MyGeminiPlugIn]call IssueClosed");

        }

 

        public void IssueCommented(IssueEventArgs args)

        {

            System.Diagnostics.Debug.WriteLine("[MyGeminiPlugIn]call IssueCommented");

        }

 

        public void IssueDeleted(IssueEventArgs args)

        {

            System.Diagnostics.Debug.WriteLine("[MyGeminiPlugIn]call IssueDeleted");

        }

 

        public void IssueProgressUpdate(IssueEventArgs args)

        {

            System.Diagnostics.Debug.WriteLine("[MyGeminiPlugIn]call IssueProgressUpdate");

        }

 

        public void IssueResolutionChange(IssueEventArgs args)

        {

            System.Diagnostics.Debug.WriteLine("[MyGeminiPlugIn]call IssueResolutionChange");

        }

 

        public void IssueResolved(IssueEventArgs args)

        {

            System.Diagnostics.Debug.WriteLine("[MyGeminiPlugIn]call IssueResolved");

        }

 

        public void IssueStatusChange(IssueEventArgs args)

        {

            System.Diagnostics.Debug.WriteLine("[MyGeminiPlugIn]call IssueStatusChange");

        }

 

        public void IssueWatcherAdded(IssueEventArgs args)

        {

            System.Diagnostics.Debug.WriteLine("[MyGeminiPlugIn]call IssueWatcherAdded");

        }

 

        public string Description

        {

            get

            {

                System.Diagnostics.Debug.WriteLine("[MyGeminiPlugIn]call Description");

                return m_strDesc;

            }

            set

            {

                m_strDesc = value;

                System.Diagnostics.Debug.WriteLine("[MyGeminiPlugIn]call Description set = " + value);

            }

        }

 

 

    }

thibaut
· 1
thibaut
Replies (3)
helpful
0
not helpful

Thanks for flagging this: http://gemini.countersoft.com/Default.aspx?p=2&i=1235

We will fix ASAP.


Saar Cohen
· 5000
Saar Cohen
helpful
0
not helpful

You can overcome this by putting the plugin DLL in the bin AND plugins directory. Do not put commons in the plugins directory.


Saar Cohen
· 5000
Saar Cohen
helpful
0
not helpful

Ok it's work; thanks.


thibaut
· 1
thibaut