Xamarin.Android版本中缺少Assembly*属性
my app suite的每个组件都在Xamarin.Android版本中缺少Assembly*属性,xamarin.android,visual-studio-2017,.net-assembly,Xamarin.android,Visual Studio 2017,.net Assembly,my app suite的每个组件都在AssemblyInfo.cs中指定以下内容以识别自身: .. [assembly: AssemblyVersion("MM.nnn.*")] [assembly: AssemblyTitle( "Component Title" )] #if DEBUG [assembly: AssemblyDescription( "<Component>.Debug" )] [assembly: AssemblyConfiguration( "Debug"
AssemblyInfo.cs
中指定以下内容以识别自身:
..
[assembly: AssemblyVersion("MM.nnn.*")]
[assembly: AssemblyTitle( "Component Title" )]
#if DEBUG
[assembly: AssemblyDescription( "<Component>.Debug" )]
[assembly: AssemblyConfiguration( "Debug" )]
#else
[assembly: AssemblyDescription( "<Component>.Release" )]
[assembly: AssemblyConfiguration( "Release" )]
#endif
完整性:
/// <summary>Returns build-date/time, extracted from the version string
(use on 'MM.nnn.*'-versioned assemblies)</summary>
public static DateTime GetBuildFromVersion( string sVersion )
{
DateTime dB = new DateTime( 2000, 1, 1 );
string[] sa = sVersion.Split( '.' );
if( sa.Length == 4 )
{
dB = dB.AddDays( Convert.ToInt32( sa[ 2 ] ) );
dB = dB.AddSeconds( Convert.ToInt32( sa[ 3 ] ) << 1 );
}
return dB;
}
这在Debug
build中非常有效。。只给了我一个版本#在<代码>发行版<代码>一个
公开适当的(与所有其他组件相似且可比较的)版本是很好的,我将接受它。但是在
发布版
构建版中的程序集*属性
的其余部分会发生什么情况?类似于从asm.Location获取崩溃的问题。代码在发布版本中的确切位置变得模糊。jtiter使用的一个基本优化是内联代码。将方法的代码移动到方法的调用方。一个对位置敏感的方法,就像任何调用Assembly.GetExecutionGassembly()的方法一样,需要[MethodImpl(MethodImplOptions.NoInLine)]属性,因此不允许将其移动。在某种程度上,我可以看到,asm.location
存在问题,因为发布版本安装到了Android上一个未知的地方。。尽管如此,它还是放在某个文件夹里——为什么不把它退回呢?那么,JIT如何使属性“可优化可移除”?它们是否被视为调试元数据?为什么不在Windows上的版本中删除它们?
/// <summary>Returns build-date/time, extracted from the version string
(use on 'MM.nnn.*'-versioned assemblies)</summary>
public static DateTime GetBuildFromVersion( string sVersion )
{
DateTime dB = new DateTime( 2000, 1, 1 );
string[] sa = sVersion.Split( '.' );
if( sa.Length == 4 )
{
dB = dB.AddDays( Convert.ToInt32( sa[ 2 ] ) );
dB = dB.AddSeconds( Convert.ToInt32( sa[ 3 ] ) << 1 );
}
return dB;
}
string sVersion = asm.GetName( ).Version.ToString( ),
sFileDsc = string.Empty,
sComment = string.Empty;
foreach( Attribute attr in asm.GetCustomAttributes( true ) )
{
if( attr.GetType( ) == typeof(AssemblyTitleAttribute) )
sFileDsc = ((AssemblyTitleAttribute)attr).Title;
else
if( attr.GetType( ) == typeof(AssemblyDescriptionAttribute) )
sComment = ((AssemblyDescriptionAttribute)attr).Description;
}
Utils.sModInfo = string.Format( Utils.scFmtModId, sFileDsc, sComment,
sVersion, Utils.GetBuildFromVersion( sVersion ) );