Changeset 845


Ignore:
Timestamp:
Nov 14, 2009, 3:39:28 AM (12 years ago)
Author:
Arno Wacker
Message:

PluginHowTo

  • Major style update - now looks fancy (chapter 1 demonstrates how it should look)
  • Minor exemplary changes in chapter 2 (this is pretty much a construction site here..)
Location:
trunk/Documentation/Developer/PluginHowTo
Files:
4 added
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Documentation/Developer/PluginHowTo/HowToDeveloper.tex

    r741 r845  
    1 \documentclass[11pt, a4paper, parskip=half, version=last, final, notitlepage]{scrartcl}
     1\documentclass[11pt, a4paper, titlepage]{scrbook}
    22
    33\usepackage[latin1]{inputenc}
     
    55\usepackage{graphicx}
    66\usepackage{booktabs}
     7\usepackage{geometry}
     8\usepackage{setspace}
    79\usepackage{fancyhdr}
    8 \pagestyle{headings}
    9 %
    10 %\pagestyle{fancy} %eigener Seitenstil
    11 %\fancyhf{} %alle Kopf- und Fußzeilenfelder bereinigen
    12 %\fancyhead[L]{\middlemark} %Kopfzeile links
    13 %\fancyhead[C]{} %zentrierte Kopfzeile
    14 %\fancyhead[R]{Name} %Kopfzeile rechts
    15 %\renewcommand{\headrulewidth}{0.4pt} %obere Trennlinie
    16 %\fancyfoot[C]{\thepage} %Seitennummer
    17 %\renewcommand{\footrulewidth}{0.4pt} %untere Trennlinie
    18 
    1910\usepackage{url}
    2011\usepackage{wrapfig}
    2112\usepackage{color}
    2213\usepackage{colortbl}
     14\usepackage{eso-pic}
    2315
    24 \usepackage[absolute]{textpos}
     16%\usepackage[automark]{scrpage2}
     17%\usepackage[absolute]{textpos}
     18
     19
     20\geometry{a4paper, portrait, left=2cm, right=2cm, top=2cm, bottom=2cm, includefoot}
     21
     22%\pagestyle{headings}
     23%\pagestyle{scrheadings}
     24\pagestyle{fancy} %eigener Seitenstil
     25\fancyhf{} %alle Kopf- und Fußzeilenfelder bereinigen
     26\fancyhead[L]{\leftmark} %Kopfzeile links
     27\fancyhead[C]{\AddToShipoutPicture*{\BackgroundHeaderPic}} %zentrierte Kopfzeile
     28\fancyhead[R]{\rightmark} %Kopfzeile rechts
     29
     30\fancyfoot[C]{\AddToShipoutPicture*{\BackgroundFooterPic}} %zentrierte Fußzeile
     31\fancyfoot[EL,OR]{\thepage} %Seitennummer
     32\fancyfoot[ER,OL]{\includegraphics[height=0.5cm]{figures/ct2Logo.png}}
     33
     34\renewcommand{\headrulewidth}{2pt} %obere Trennlinie
     35\renewcommand{\footrulewidth}{2pt} %untere Trennlinie
     36
     37\renewcommand{\headrule}{{\color{orange}\hrule width\headwidth height\headrulewidth \vskip-\headrulewidth}}
     38\renewcommand{\footrule}{{\color{orange}\vskip-\footruleskip\vskip-\footrulewidth\hrule width\headwidth height\footrulewidth\vskip\footruleskip}}
     39
     40
     41\makeatletter
     42\newcommand\BackgroundHeaderPic{
     43%\AddToShipoutPicture{%
     44    \setlength{\@tempdimb}{1.9cm}%
     45    \setlength{\@tempdimc}{28.4cm}%
     46    \setlength{\unitlength}{1pt}%
     47    \put(\strip@pt\@tempdimb,\strip@pt\@tempdimc){
     48        \parbox[b][\headheight]{\headwidth}{%
     49            \includegraphics[width=\headwidth, height=\headheight]{figures/ct2Header.png}%
     50        }
     51    }
     52}
     53
     54\newcommand\BackgroundFooterPic{
     55%\AddToShipoutPicture{%
     56    \setlength{\@tempdimb}{1.9cm}%
     57    \setlength{\@tempdimc}{1.8cm}%
     58    \setlength{\unitlength}{1pt}%
     59    \put(\strip@pt\@tempdimb,\strip@pt\@tempdimc){
     60        \parbox[b][0.8cm]{\headwidth}{%
     61            \includegraphics[width=\headwidth, height=0.8cm]{figures/ct2Footer.png}%
     62        }
     63    }
     64}
     65
     66\makeatother
    2567
    2668% finetune the gaps between figure and text in the subfigure environment (basically close the gap as much as possible)
     
    4183
    4284% For screen viewing it is nice to have references marked in a slightly different
    43 % color than the rest of the text. Since they will be hyperlinks to the 
     85% color than the rest of the text. Since they will be hyperlinks to the
    4486% referenced objects.
    4587\usepackage[pdftex,
    46              pdftitle={},
     88             pdftitle={\@title},
    4789             colorlinks,
    4890             linkcolor={mydarkgrey},
     
    5193             plainpages={false},
    5294             bookmarksnumbered={true},
    53              pdfauthor={},
    54              pdfsubject={},
     95             pdfauthor={\@author},
     96             pdfsubject={\@subtitle},
    5597             pdfkeywords={},
    5698             pdfstartview={FitBH}]{hyperref}
    57              
     99
     100\usepackage{pdfsync}
     101
    58102% To avoid nasty mistakes like having comments directly in the textflow
    59103% the following \todo macro was defined. With that you can enter
    60 % \todo{What I still have to do here} 
    61 % inside of your text and a marker will appear at the page's margin with the 
     104% \todo{What I still have to do here}
     105% inside of your text and a marker will appear at the page's margin with the
    62106% text "What I still have to do here".
    63107% The first line activates this feature. If you comment it out and uncomment
    64108% the second line below there will be no error messages and no todos will be shown
    65109% anymore. So - even if you have forgotten to delete one of them - they will not appear
    66 % in the final printout. 
     110% in the final printout.
    67111\newcommand{\todo}[1]{\marginpar{\textcolor{red}{ToDo:} #1}}
    68112
    69 %\usepackage[automark]{scrpage2}
    70 \usepackage{pdfsync}
    71 %\pagestyle{scrheadings}
    72 %\usepackage{fancyhdr}
     113
     114\input{frontpage}
     115
    73116
    74117\title{CrypTool 2.0}
    75118\subtitle{Developer Manual}
    76 \author{Sebastian Przybylski \and Arno Wacker \and Matthäus Wander \and Fabian Enkler}
     119\author{S.\ Przybylski, A.\ Wacker, M\ Wander and F\ Enkler}
     120\email{\{przybylski$|$wacker$|$wander$|$enkler\}@cryptool.org}
     121\version{0.1}
     122\date{\today}
    77123
     124%\AtBeginDocument{\markboth{\@author}{\@title}}
    78125\begin{document}
    79         %\maketitle
    80         \include{frontpage}
    81        
     126        \maketitle
     127
    82128        \tableofcontents
     129
    83130        \include{part1}
    84131        \include{part2}
  • trunk/Documentation/Developer/PluginHowTo/frontpage.tex

    r385 r845  
    1 % requires the following:
    2 % \usepackage[absolute]{textpos}
    3 \begin{titlepage}
    4 \vspace*{-1cm}
    5 \newlength{\links}
    6 \setlength{\links}{0.9cm}
    7 \setlength{\TPHorizModule}{1cm}
    8 \setlength{\TPVertModule}{1cm}
    9 \textblockorigin{0pt}{0pt}
     1\makeatletter
     2\def\maketitle{%
     3    \null
     4    \thispagestyle{empty}%
     5    \vfill
     6   
     7    \begin{figure} [ht]
     8           \centering
     9       \includegraphics[height=4cm]{figures/ct2Logo.png}
     10    \end{figure}
     11   
     12    \vskip 2cm
     13   
     14    \begin{center}\leavevmode
     15        \normalfont
     16        {\Huge \@title\par}%
     17        {\huge \@subtitle\par}%
     18        \vskip 1cm
     19        {\Large \@author\par}%
     20        {\large\it \@email\par}%
     21        \vskip 2cm
     22        {\Large Version: \@version\par}%
     23        {\Large \@date\par}%
     24    \end{center}%
     25    \vfill
     26    \null
     27    \cleardoublepage
     28  }
    1029
    11 \sf
    12 \LARGE
     30\def\date#1{\def\@date{#1}}
     31\def\author#1{\def\@author{#1}}
     32\def\title#1{\def\@title{#1}}
     33\def\subtitle#1{\def\@subtitle{#1}}
     34\def\version#1{\def\@version{#1}}
     35\def\email#1{\def\@email{#1}}
    1336
    14 \begin{textblock}{14.5}(3.2,6.5)
    15 \Large [fancy logo] \\[3cm] 
    16 { \bf CrypTool 2.0} \\[1cm]
    17 {\LARGE \bf DEVELOPER INFORMATION}\\[1.3cm]
    1837
    19 \normalsize Authors:\\
    20 \Large Sebastian Przybylski\\
    21 etc.\\
    22 
    23 \large \today\\
    24 Version 0.1
    25 \end{textblock}
    26 
    27 \end{titlepage}
     38 
     39% Default values
     40\date{\today}
     41\author{}
     42\title{}
     43\subtitle{Paris}
     44\version{}
     45\email{no email address}
     46 
     47 
     48 
     49\makeatother
  • trunk/Documentation/Developer/PluginHowTo/part1.tex

    r385 r845  
    1 \part{Developer Guidelines}
     1\chapter{Developer Guidelines}
    22
    3 CrypTool 2.0 uses state-of-the-art technologies like .NET 3.5 and WPF. In order to make your first steps towards developing something in the context of this project a few things need to be considered. In order to not get stuck, please follow the instructions on this page. If you encouter a problem/error, which is not described here, please let us know, so we can add this information to this guide. 
     3CrypTool 2.0 uses state-of-the-art technologies like .NET 3.5 and WPF. In order to make your first steps towards developing something in the context of this project a few things need to be considered. In order to not get stuck, please follow the instructions on this page. If you encouter a problem/error, which is not described here, please let us know, so we can add this information to this guide.
    44
    55In the following we describe all steps necessary in order to compile CrypTool 2.0 on your own. This is always the first thing you need to do before you go on developing own plugins and extensions. The basic steps are
    66\begin{itemize}
    7         \item Getting all pre-requisites and installing them 
    8         \item Accessing and downloading the source code with SVN 
     7        \item Getting all pre-requisites and installing them
     8        \item Accessing and downloading the source code with SVN
    99        \item Compiling the source-code for the first time
    1010\end{itemize}
     
    1212\section{Pre-requisites}
    1313
    14 Since CrypTool 2.0 is based on Microsoft .NET 3.5, you first need a Microsoft Windows environment. (Right now no plans exist for porting this project to mono and therefore other platforms.) We successfully tested with \textbf{Windows XP} and \textbf{Windows Vista}. 
     14Since CrypTool 2.0 is based on Microsoft .NET 3.5, you first need a Microsoft Windows environment. (Right now no plans exist for porting this project to mono and therefore other platforms.) We successfully tested with \textbf{Windows XP} and \textbf{Windows Vista}.
    1515
    16 Since you're reading the developer guidlines, you probably want to develop something. Hence you need a developer environment. In order to compile our sources you need \textbf{Microsoft Visual Studio 2008 Professional}. Please make sure you always install the latest service packs for Visual Studio too. Unfortunately it does not work (smoothly) with the freely available Visual Studio Express (C\#) versions. This is due to the fact, that CrypWin uses a commercial component, and is therefore distributed only as binary. The C\# Express version unfortunately cannot handle a binary as a start project, hence debugging becomes cumbersome. 
     16Since you're reading the developer guidlines, you probably want to develop something. Hence you need a developer environment. In order to compile our sources you need \textbf{Microsoft Visual Studio 2008 Professional}. Please make sure you always install the latest service packs for Visual Studio too. Unfortunately it does not work (smoothly) with the freely available Visual Studio Express (C\#) versions. This is due to the fact, that CrypWin uses a commercial component, and is therefore distributed only as binary. The C\# Express version unfortunately cannot handle a binary as a start project, hence debugging becomes cumbersome.
    1717
    18 Usually the installation of Visual Studio also installs the .NET framework. In order to run/compile our source code you need (at the time of this writing) at least \textbf{Microsoft .NET 3.5 with Service Pack 1 (SP1)}. You can get this freely from Microsofts \href{http://download.microsoft.com/download/2/0/e/20e90413-712f-438c-988e-fdaa79a8ac3d/dotnetfx35.exe}{webpage}. 
     18Usually the installation of Visual Studio also installs the .NET framework. In order to run/compile our source code you need (at the time of this writing) at least \textbf{Microsoft .NET 3.5 with Service Pack 1 (SP1)}. You can get this freely from Microsofts \href{http://download.microsoft.com/download/2/0/e/20e90413-712f-438c-988e-fdaa79a8ac3d/dotnetfx35.exe}{webpage}.
    1919
    2020After the last step, your development environment should be ready for our source-code. Hence, now you need a way of accessing and downloading the entire sources. In the CrypTool 2.0 project we use SVN (subversion control) for version control, hence you need an \textbf{SVN client} of you're choice, e.g. \textbf{TortoiseSVN} or the \textbf{svn commandline from cygwin}. If you never worked with SVN before, we suggest to download and install \href{http://www.tortoisesvn.net/}{TortoiseSVN}, since it offers a nice windows explorer integration of SVN and any windows user should feel right away at home.
     
    2626\subsection*{SVN URL}
    2727
    28 Our code repository is accessable under the following url: 
     28Our code repository is accessable under the following url:
    2929
    3030\url{https://www.cryptool.org/svn/CrypTool2/}
     
    3434\subsection*{Accessing the SVN with TortoiseSVN}
    3535
    36 As already mentioned, in order to use the SVN repository one of the best options is \href{http://www.tortoisesvn.net/}{TortoiseSVN}. Please install TortoiseSVN (unfortunately it will ask you to reboot, which you need to do) and then create somewhere on your computer a directory (for instance "Cryptool2") for storing the local working files. Right click on this directory and select "SVN Checkout" from the context menu. In the new appearing window you must enter the URL of the repository as given above. The "Checkout directory" should be filled in correctly. After that, just hit ok, accept the certificate (if necessary) and enter your user credentials or "anonymous" for guests. Also mark the checkbox for saving your crendentials otherwise you will be asked about them for every single file. Then hit ok, and now the whole CrypTool2 repository should be checked out into the given directory. 
     36As already mentioned, in order to use the SVN repository one of the best options is \href{http://www.tortoisesvn.net/}{TortoiseSVN}. Please install TortoiseSVN (unfortunately it will ask you to reboot, which you need to do) and then create somewhere on your computer a directory (for instance "Cryptool2") for storing the local working files. Right click on this directory and select "SVN Checkout" from the context menu. In the new appearing window you must enter the URL of the repository as given above. The "Checkout directory" should be filled in correctly. After that, just hit ok, accept the certificate (if necessary) and enter your user credentials or "anonymous" for guests. Also mark the checkbox for saving your crendentials otherwise you will be asked about them for every single file. Then hit ok, and now the whole CrypTool2 repository should be checked out into the given directory.
    3737
    38 Later on, if you just want to update (if there where changes in the repository) you can do this with right click on any directory within the working files and choose "SVN Update" from the context menu. If you changed a file you should choose "SVN Commit" from the context menu in order to upload your changes. Please always provide \textit{meaningfull descriptions} of your updates. 
     38Later on, if you just want to update (if there where changes in the repository) you can do this with right click on any directory within the working files and choose "SVN Update" from the context menu. If you changed a file you should choose "SVN Commit" from the context menu in order to upload your changes. Please always provide \textit{meaningfull descriptions} of your updates.
    3939
    4040A TortoiseSVN Tutorial can be found \href{http://www.mind.ilstu.edu/research/robots/iris4/developers/svntutorial}{here}.
     
    4848\section{Compiling the sources}
    4949
    50 At this point you should have checked out the entire CrypTool repository. Then compiling is pretty easy, you just go to the directory \textit{trunk/} and open the \textbf{CrypTool 2.0.sln} Visual Studio solution. Now Visual Studio should open with all working plugins and all components nicely arranged. In case you started Visual Studio now for the very first time, you must choose a certain settings -- just select either "most common" or "C\#" -- you can change this at any time later. In the right hand you get the project explorer, where you see all the subprojects included in the solution. You have to look for the project \textbf{CrypWin.exe} there. When you found it, you need to right-click it and select \textbf{"Set as startup-project"} from the context menu. After you have done this, just go to the menu \textit{Build} and select \textit{Build solution} (clearly you can also use the hotkeys if you memorized them). Then go to \textit{Debug} and click \textit{Start debugging} -- now CrypTool 2.0 should start for the first time with your own compiled code -- clearly you did not change yet anything, however, you have now an own build of all components (with the exception of CrypWin and AnotherEditor, since they are available only as binary). In case it does not compile or start, please consult our \href{https://www.cryptool.org/trac/CrypTool2/wiki/FAQ}{F.A.Q.} and let us know if you found a bug. 
     50At this point you should have checked out the entire CrypTool repository. Then compiling is pretty easy, you just go to the directory \textit{trunk/} and open the \textbf{CrypTool 2.0.sln} Visual Studio solution. Now Visual Studio should open with all working plugins and all components nicely arranged. In case you started Visual Studio now for the very first time, you must choose a certain settings -- just select either "most common" or "C\#" -- you can change this at any time later. In the right hand you get the project explorer, where you see all the subprojects included in the solution. You have to look for the project \textbf{CrypWin.exe} there. When you found it, you need to right-click it and select \textbf{"Set as startup-project"} from the context menu. After you have done this, just go to the menu \textit{Build} and select \textit{Build solution} (clearly you can also use the hotkeys if you memorized them). Then go to \textit{Debug} and click \textit{Start debugging} -- now CrypTool 2.0 should start for the first time with your own compiled code -- clearly you did not change yet anything, however, you have now an own build of all components (with the exception of CrypWin and AnotherEditor, since they are available only as binary). In case it does not compile or start, please consult our \href{https://www.cryptool.org/trac/CrypTool2/wiki/FAQ}{F.A.Q.} and let us know if you found a bug.
    5151
    5252As a core-developer, hence somebody who can also compile CryWin and AnotherEditor, you should use the \textbf{CrypTool 2.0.sln} solution from the trunk/CoreDeveloper/ directory (this directory is \textbf{not} visible to you if you are not a core developer). As a core developer you should know, that when compiling you \textbf{change} the CryWin.exe which is visible to everybody else. Hence, when doing a checkin, please make sure you \textit{really} want to checkin a new binary.
  • trunk/Documentation/Developer/PluginHowTo/part2.tex

    r741 r845  
    1 \part{Create an Encryption/Hash-Plugin using Visual Studio 2008}
    2 
    3 \section{Create a new project in VS2008 for your plugin}\label{sec:CreateANewProjectInVS2008ForYourPlugin}
     1\chapter{Plugin Implementation}
     2In this chapter we provide step-by-step instructions for implementing your own CrypTool 2.0 plugin. The given instructions refer to the usage of MS Visual Studio 2008 Professional, hence before starting you should have installed your copy of MS Visual Studio 2008.
     3
     4
     5
     6\section{New project}
     7\label{sec:CreateANewProjectInVS2008ForYourPlugin}
    48Open Visual Studio 2008 and create a new project:
    59
    6 
    7 
    8 Select "`.NET-Framework 3.5"` as the target framework (the Visual Studio Express edition don't provide this selection because it automatically chooses the actual target framework), and "`Class Library"` as default template to create a DLL file. Give the project a unique and significant name (here: "`Caesar"`), and choose a location where to save (the Express edition will ask later for a save location when you close your project or your environment).  Finally confirm by pressing the "`OK"` button.
    9 
    10 
    11 
     10Select ''.NET-Framework 3.5'' as the target framework (the Visual Studio Express edition don't provide this selection because it automatically chooses the actual target framework), and ''Class Library'' as default template to create a DLL file. Give the project a unique and significant name (here: ''Caesar''), and choose a location where to save (the Express edition will ask later for a save location when you close your project or your environment).  Finally confirm by pressing the ''OK'' button.
    1211
    1312Now your Visual Studio solution should look like this:
    1413
    1514
    16 [IMAGE]
    17 
    18 
    19 \section{Select the interface, your plugin wants to serve}\label{sec:SelectTheInterfaceYourPluginWantsToServe}
    20 First we have to add a reference to the Cryptool library called "CrypPluginBase.dll" where all necessary Cryptool plugin interfaces are declared.
    21 
    22 [IMAGE]
    23 
    24 Make a right click in the Solution Explorer on the "Reference" item and choose "Add Reference".
    25 
    26 Now browse to the path where the library file is located (e.g. "C:$\backslash$Documents and Settings$\backslash$$\textless$Username$\textgreater$$\backslash$My Documents$\backslash$Visual Studio 2008$\backslash$Projects$\backslash$CrypPluginBase$\backslash$bin$\backslash$Debug")
     15\begin{figure}
     16    %includegraphics...
     17    \caption{Figure 1}\label{fig:figure1}
     18\end{figure}
     19
     20
     21\section{Interface selection}
     22\label{sec:SelectTheInterfaceYourPluginWantsToServe}
     23First we have to add a reference to the CrypTool library called "CrypPluginBase.dll" where all necessary CrypTool plugin interfaces are declared.
     24
     25\begin{figure}
     26    %includegraphics...
     27    \caption{Figure 2}\label{fig:figure2}
     28\end{figure}
     29
     30Make a right click in the Solution Explorer on the ''Reference'' item and choose ''Add Reference''.
     31
     32Now browse to the path where the library file is located (e.g. ''C:\\Documents and Settings\\<Username>\\My Documents\\Visual Studio 2008\\Projects\\CrypPluginBase\\bin\\Debug'')
    2733
    2834and select the library by double clicking the file or pressing the "OK" button.
    2935
    30 [IMAGE]
     36\begin{figure}
     37    %includegraphics...
     38    \caption{Figure 3}\label{fig:figure3}
     39\end{figure}
    3140
    3241Besides the CrypPluginBase you need to add three assembly references to provide the necessary "Windows" namespace for your user control functions called "Presentation" and "QuickWatchPresentation". Select the following .NET components:
     
    102111
    103112It is important to define a new default namespace of our public class ("Caesar"). In CrypTool the default namespace is presented by "Cryptool.[name of class]". Therefore our namespace has to be defined as follows: "Cryptool.Caesar".
    104  
     113
    105114Up to now the source code should look as you can see below:
    106115
     
    117126
    118127Choose the item "Implement interface 'IEncryption'". Visual Studio will now place all available and needed interface members to interact with the CrypTool core (this saves you also a lot of typing code).
    119  
    120 Your code will now look like this: 
     128
     129Your code will now look like this:
    121130
    122131[IMAGE]
     
    131140\subsection{Add controls for the class CaesarSettings (if needed)}\label{sec:AddControlsForTheClassMD5SettingsIfNeeded}
    132141Now we have to implement some kind of controls (like button, text box) if we need them in the CrypTool \textbf{TaskPane} to modify settings of the algorithm.
    133  
     142
    134143\section{Select and add an image as icon for the class MD5}\label{sec:SelectAndAddAnImageAsIconForTheClassMD5}
    135144Before we go back to the code of the Caesar class, we have to add an icon image to our project, which will be shown in the CrypTool ribbon bar or/and navigation pane. As there is no default, using an icon image is mandatory.
     
    185194This attribute expects the following elements:
    186195
    187 \hspace{20pt}o\hspace{10pt}startable = 
     196\hspace{20pt}o\hspace{10pt}startable =
    188197Set this flag to true only if your plugin is some kind of input or generator plugin (probably if your plugin just has outputs and no inputs). In all other cases use false here. This flag is important. Setting this flag to true for a non input/generator plugin will result in unpredictable chain runs. This element is mandatory.
    189198
    190 \hspace{20pt}o\hspace{10pt}caption = 
     199\hspace{20pt}o\hspace{10pt}caption =
    191200from type string, the name of the plugin (e.g. to provide the button content). This element is mandatory.
    192201
     
    326335[IMAGE]
    327336
    328 CrypTool does not require implementing output setters, as they will never be called from outside of the plugin. Nevertheless in this example our plugin accesses the property itself, therefore we chose to implement the setter. 
     337CrypTool does not require implementing output setters, as they will never be called from outside of the plugin. Nevertheless in this example our plugin accesses the property itself, therefore we chose to implement the setter.
    329338
    330339You can also provide additional output data types if you like. For example we provide also an output data of type CryptoolStream:
     
    410419This option is a temporary solution for importing new plugins. In the future this will be done online by a web service.
    411420
    412 \hspace{20pt}4. Use post-build in your project properties to copy the DLL automatically after building it in Visual Studio. Right-click on your plugin project and select "Properties": 
    413 
    414 [IMAGE]
    415 
    416 Select "Build Events": 
     421\hspace{20pt}4. Use post-build in your project properties to copy the DLL automatically after building it in Visual Studio. Right-click on your plugin project and select "Properties":
     422
     423[IMAGE]
     424
     425Select "Build Events":
    417426
    418427[IMAGE]
Note: See TracChangeset for help on using the changeset viewer.