0

.csproj ファイル内の solutioninfo.cs と assemblyinfo.cs からいくつかの情報にアクセスし、それをプロパティとして使用する必要があります。

の値を使用します

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

私のcsprojで:

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

値にアクセスする方法はありますか?

4

2 に答える 2

2

csproj ファイルの最後に、BeforeBuild と AfterBuild という 2 つの空の MSBuild ターゲットがあります。これら 2 つのターゲットは、多かれ少なかれ、ビルド前およびビルド後のイベントに置き換わるものです。そこに独自のスクリプトを追加できます。たとえば、Subversion からバージョンを取得した後、SolutionInfo.cs でバージョンを設定しています。これは、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の一部です。

于 2009-09-10T14:41:29.630 に答える
1

これは、ReflectionクラスとAssemblyAttributeクラスを介して行うことができます。例えば:

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

Console.Write(company.Company);

使用するSystem.Reflectionを追加する必要がある場合があります。コードの先頭へのディレクティブ。

于 2009-09-10T14:33:03.333 に答える