We have only couple of developers who are using PostSharp.Toolkit.Diagnostics and having PostSharp Pro license .
However ther are much more developers , who are building our solution, but do not required Toolkit.Diagnostics XmlMulticast features, that are referred in %ProjName%.psproj file.
As a workaround I’ve suggested to to replace locally psproj file with dummy, that doesn’t have XmlMulticast(PostSharp feature that available only in Pro edition).
If a developer doesn’t have PostSharp Pro license, they shoul set Environment variable POSTSHARP_PRO=false to effectively exclude psproj from the build on their local machine.
detailed instructions How to Add, Remove or Edit Environment variables in Windows 7 can be found at http://www.itechtalk.com/thread3595.html.
For Each project using PostSharp.Toolkit.Diagnostics A subfolder PreBuild.Config has been created.
It includes minimal dev.psproj ,
PreBuild.cmd
and the full %ProjName%.psproj (e.g. MyProject.psproj ) that is used as a master version on build machine.
%ProjName%.psproj located in the root on local machines should kept as minimal – the same as Dev.Configdev.psproj.
<?xml version=“1.0“ encoding=“utf-8“?>
<!–Empty project for developers without PostSharp Pro.
Do NOT check-in %ProjName%.psproj
–>
<Project xmlns=“http://schemas.postsharp.org/1.0/configuration“ ReferenceDirectory=“{$ReferenceDirectory}“>
<Property Name=“LoggingBackEnd“ Value=“nlog“ />
<Using File=“default“ />
<Tasks>
</Tasks>
</Project>
For each project that uses toolkit insert into PreBuild Event command line
cmd /c $(ProjectDir)PreBuild.Config\PreBuild.cmd $(ProjectName)
File PreBuild.Config\PreBuild.cmd
rem developers without PostSharp Pro installed please set environment variable POSTSHARP_PRO=false
@rem see http://www.itechtalk.com/thread3595.html detailed instructions How to Add, Remove or Edit Environment variables in Windows 7
@REM Insert into PreBuild Event command line
@REM cmd /c $(ProjectDir)\PreBuild.Config\PreBuild.cmd $(ProjectName)
set ProjName=%1
set PSProjFile=..\%ProjName%.psproj
if ‘%POSTSHARP_PRO%==’false goto devPsproj
:proPsproj
set FileFrom=%ProjName%.psproj
@goto copyFile
:devPsproj
set FileFrom=dev.psproj
:copyFile
rem The current dir seems to be \bin\Debug for Library project or Windows Console/Services, but \bin for WAP(Webjet application project)
cd ..\..\PreBuild.Config
@rem see http://www.itechtalk.com/thread3595.html detailed instructions How to Add, Remove or Edit Environment variables in Windows 7
@REM Insert into PreBuild Event command line
@REM cmd /c $(ProjectDir)\PreBuild.Config\PreBuild.cmd $(ProjectName)
set ProjName=%1
set PSProjFile=..\%ProjName%.psproj
if ‘%POSTSHARP_PRO%==’false goto devPsproj
:proPsproj
set FileFrom=%ProjName%.psproj
@goto copyFile
:devPsproj
set FileFrom=dev.psproj
:copyFile
rem The current dir seems to be \bin\Debug for Library project or Windows Console/Services, but \bin for WAP(Webjet application project)
cd ..\..\PreBuild.Config
ATTRIB -R %PSProjFile%
copy /Y %FileFrom% %PSProjFile%
:end
@rem pause