我有一个在winforms应用程序中非常有效的c#函数,它可以检测在AssemblyInfo.cs中标记的容器DLL的版本:
private string getVersion() {
System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(assembly.Location);
string tempFileVersion = fvi.FileVersion;
if (tempFileVersion.EndsWith(".0")) {
return tempFileVersion.Substring(0, tempFileVersion.Length - 2);
} else {
return tempFileVersion;
}
}问题是,此函数在作为ASP.NET webapp的一部分在IIS中调用时会抛出异常。我假设这归结为权限问题,但是有没有办法让一个函数在IIS上下文中询问它所在的DLL“您的版本是什么”?
发布于 2021-09-11 14:09:38
来自Steeeve的超级简单的解决方案:
添加新类:
public static class VersionInfo {
public const string VersionString = "1.0";
}修改两行AssemblyInfo.cs:
[assembly: AssemblyVersion(VersionInfo.VersionString)]
[assembly: AssemblyFileVersion(VersionInfo.VersionString)]现在,我的DLL中任何需要在运行时知道它的版本的地方,都可以简单地调用VersionInfo.VersionString,而不需要求助于混乱和昂贵的反射。
https://stackoverflow.com/questions/69135737
复制相似问题