自动软件更新会导致某些模块属性不起作用吗?我真的很想在这里发布的此功能。它们基本上与从当前执行的程序集中读取图像徽标的功能相同。名为“ Get2LogoImageStream”的函数与“ Get1LogoImageStream”的区别仅在于Current.ManifestModule.Name与Current.ManifestModule.ScopeName。
此代码的“ Current.ManifestModule.Name”版本可在“ Web From”应用程序和Windows窗体应用程序上使用,但是现在仅适用于Windows App窗体。但是,当我将代码“ Current.ManifestModule.Name”更改为“ Current.ManifestModule.ScopeName”时,它可以在WEB上正常工作。因此,我对其他C#或VB.NET开发人员的疑问是,自动软件更新是否会导致此类问题?
protected Stream Get1LogoImageStream()
{
Assembly current = Assembly.GetExecutingAssembly();
string imageName = "logo.jpg";
string file = string.Format("{0}.{1}", current.ManifestModule.ScopeName.Replace(".dll", string.Empty), imageName);
return current.GetManifestResourceStream(file);
}
protected Stream Get2LogoImageStream()
{
Assembly current = Assembly.GetExecutingAssembly();
string imageName = "logo.jpg";
string file = string.Format("{0}.{1}", current.ManifestModule.Name.Replace(".dll", string.Empty), imageName);
return current.GetManifestResourceStream(file);
}
最佳答案
由于.Name仅返回程序集,而.ScopeName返回完整路径,因此可能是某些原因导致您的程序需要徽标文件的绝对路径才能运行。
从那里开始,可能有很多事情,想法浮现在脑海:
1)您有一个环境变量,用于存储允许找到它的图像的路径。
2)您移动了图像或程序集,或以某种方式更改了运行程序集的上下文,以使其在错误的位置搜索图像。
3)不太可能某些.NET更新要求使用完全限定的名称,但我对此表示怀疑。
没有更多细节,这很难说。