Доступ к solutioninfo.cs и assemblyinfo.cs из .csproj - PullRequest
0 голосов
/ 10 сентября 2009

Мне нужно получить доступ к некоторой информации из моего solutioninfo.cs и assemblyinfo.cs в моем файле .csproj и использовать ее в качестве свойства.

используйте значение

// my solutioninfo.cs    
[assembly: AssemblyCompany("MyCompany")]

в моем csproj:

// my .csproj
<PublisherName>MyCompany</PublisherName>

Есть ли способ получить доступ к значениям?

Ответы [ 2 ]

2 голосов
/ 10 сентября 2009

В самом конце вашего файла csproj есть две пустые цели MSBuild, называемые BeforeBuild и AfterBuild. Эти две цели являются более или менее заменой событий до и после сборки. Вы можете добавить свой собственный скрипт там. Я устанавливаю версию в SolutionInfo.cs, например, после получения ее из Subversion, что достигается с помощью MSBuild.CommunityTasks:

<Target Name="BeforeBuild">
  <FileUpdate
    Files="$(SolutionInfoFile)"
    Regex="(?&lt;ver&gt;assembly: AssemblyVersion\(&quot;).*&quot;"
    ReplacementText="${ver}$(Major).$(Minor).$(Build).$(Revision)&quot;" />
  <FileUpdate
    Files="$(SolutionInfoFile)"
    Regex="(?&lt;ver&gt;assembly: AssemblyFileVersion\(&quot;).*&quot;"
    ReplacementText="${ver}$(Major).$(Minor).$(Build).$(Revision)&quot;" />
  <FileUpdate
    Files="$(SolutionInfoFile)"
    Regex="(?&lt;ver&gt;assembly: AssemblyInformationalVersion\(&quot;).*&quot;"
    ReplacementText="${ver}$(Major).$(Minor).$(Build)&quot;" />
</Target>

AFAIR Задача FileUpdate с регулярным выражением также является частью CommunityTasks.

1 голос
/ 10 сентября 2009

Это можно сделать с помощью классов Reflection и AssemblyAttribute. Например:

AssemblyCompanyAttribute company =
 (AssemblyCompanyAttribute)AssemblyCompanyAttribute.GetCustomAttribute(System.Reflection.Assembly.GetExecutingAssembly() , typeof
    (AssemblyCompanyAttribute));

Console.Write(company.Company);

Возможно, вам понадобится добавить использование System.Reflection; директива к началу вашего кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...