На C # Express ответ прост: нет.
C # Express не поддерживает расширения . Люди пытались раньше, и это стало ужасно. Адвокаты, бардак, все. Известный пример - TestDriven.NET .
Если вы не против сборки в командной строке, вы можете использовать пользовательскую задачу msbuild или команду pre-build / post-build.
В VS2005 / VS2008 («правильный») «пользовательский инструмент» - это один из способов; это включает в себя написание Package
; Я сделал это недавно , и код открыт для проверки.
Т4 - это еще один вариант развития событий. Это не соответствовало моим потребностям, но могло бы удовлетворить ваши.
В качестве быстрой проверки событий сборки, я добавил (в экспресс-проекте) события до и после сборки (Свойства проекта -> События сборки):
echo $(TargetPath)
и
echo $(SolutionDir)
* * Соответственно тысяча двадцать восемь; нажмите build, и теперь вывод:
------ Build started: Project: ConsoleApplication10, Configuration: Release Any CPU ------
echo D:\SomePath\ConsoleApplication10.exe
D:\SomePath\ConsoleApplication10.exe
c:\WINDOWS\Microsoft.NET\Framework\v3.5\Csc.exe /noconfig /unsafe+ /nowarn:1701,1702 /errorreport:prompt /warn:4 /define:TRACE /reference:"c:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Core.dll" /reference:"c:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Data.DataSetExtensions.dll" /reference:c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Data.dll /reference:c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Design.dll /reference:c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.dll /reference:c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Drawing.dll /reference:c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Windows.Forms.dll /reference:c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Xml.dll /reference:"c:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Xml.Linq.dll" /debug:pdbonly /filealign:512 /optimize+ /out:obj\Release\ConsoleApplication10.exe /target:exe Form1.cs Form1.Designer.cs Form2.cs Form2.Designer.cs Program.cs Properties\AssemblyInfo.cs
Compile complete -- 0 errors, 0 warnings
ConsoleApplication10 -> D:\SomePath\ConsoleApplication10.exe
echo D:\SomePath
D:\SomePath
========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========
Так что, кажется, работает нормально (то есть оба события были выполнены). Не элегантно, но выполнимо. Макросы должны позволять вам (с некоторыми покерами) доступ к элементам проекта, например $(ProjectPath)SomeFile.xml