Exemple #1
0
    public void Execute()
    {
        SetSearchPath();
        using( var repo = GitFinder.TryLoadFromPath( SolutionDirectoryPath ) )
        {
            _info = new StandardInfo( new PersistentInfo( repo ), ModuleDefinition );

            var customAttributes = ModuleDefinition.Assembly.CustomAttributes;
            var attr = customAttributes.FirstOrDefault(x => x.AttributeType.Name == "AssemblyInformationalVersionAttribute");
            if( attr != null )
            {
                _informationalVersion = (string)attr.ConstructorArguments[0].Value;
                _informationalVersion = _info.ReplaceTokens( _informationalVersion );
                attr.ConstructorArguments[0] = new CustomAttributeArgument( ModuleDefinition.TypeSystem.String, _informationalVersion );
            }
            else
            {
                var versionAttribute = GetVersionAttribute();
                var constructor = ModuleDefinition.Import( versionAttribute.Methods.First( x => x.IsConstructor ) );
                attr = new CustomAttribute( constructor );
                _informationalVersion = _info.ToString();
                attr.ConstructorArguments.Add( new CustomAttributeArgument( ModuleDefinition.TypeSystem.String, _informationalVersion ) );
                customAttributes.Add( attr );
            }
        }
    }