C# 图标不';出版后不工作
我有一个简单的应用程序。单击按钮时,tasbar图标会更改。当我从visual studio运行此应用程序时,一切正常,但当我发布WPF应用程序时,任务栏图标不起作用(没有) 构建操作设置为“embedded resource/copy always”,我也测试了“resource”,但它不起作用C# 图标不';出版后不工作,c#,wpf,icons,C#,Wpf,Icons,我有一个简单的应用程序。单击按钮时,tasbar图标会更改。当我从visual studio运行此应用程序时,一切正常,但当我发布WPF应用程序时,任务栏图标不起作用(没有) 构建操作设置为“embedded resource/copy always”,我也测试了“resource”,但它不起作用 var iconUri = new Uri("pack://application:,,,/images/internet_connection.ico", UriKind.RelativeOrAbs
var iconUri = new Uri("pack://application:,,,/images/internet_connection.ico", UriKind.RelativeOrAbsolute);
this.Icon = BitmapFrame.Create(iconUri);
框架左上角的图标会更改,但任务栏中的图标不会更改
有人能帮我吗
@编辑
多亏了@Pavel的评论,我才得以成功。但现在仍然存在一个问题:
当我在visual studio中运行它时,我会这样做:
var iconUri = UriHelper.GetUri(this.GetType(), "images/local_network.ico");
this.Icon = BitmapFrame.Create(iconUri);
图标将更改。但随着版本的发布,它并没有改变
@@编辑
这是我按下按钮时的代码:
var iconUri = UriHelper.GetUri(this.GetType(), "images/internet_connection.ico");
this.Icon = BitmapFrame.Create(iconUri);
mNotifyIcon = new NotifyIcon
{
BalloonTipText = "The app has been minimised. Click the tray icon to show.",
BalloonTipTitle = "The App",
Text = "The App",
Icon = BitmapFrame.Create(iconUri)
};
BitmapImage image = new BitmapImage();
image.BeginInit();
image.UriSource = UriHelper.GetUri(this.GetType(), "images/internet_connection.png");
image.EndInit();
TaskbarItemInfo = new System.Windows.Shell.TaskbarItemInfo() { Overlay = image };
它做什么:
当从VS运行时:任务栏中的图标发生变化,覆盖层工作,应用程序上角的图标发生变化
编译运行exe后:任务栏中的图标不会更改,覆盖层工作,应用程序上角的图标会更改
有人能解释一下吗?尝试在“资源”中设置生成操作,并使用助手:
public static class UriHelper
{
/// <summary>
/// Gets absulute URI for provided relative path
/// </summary>
/// <param name="baseType">Base type for ussage as URI root</param>
/// <param name="relativePath">Relative path</param>
/// <returns>Absolute Uri</returns>
public static Uri GetUri(Type baseType, string relativePath)
{
Assembly oAssembly = Assembly.GetAssembly(baseType);
AssemblyName oName = oAssembly.GetName();
return new Uri(
String.Format(
"pack://application:,,,/{0};v{1};component/{2}",
oName.Name,
oName.Version.ToString(),
relativePath),
UriKind.Absolute);
}
}
公共静态类
{
///
///获取提供的相对路径的absulute URI
///
///ussage作为URI根的基类型
///相对路径
///绝对Uri
公共静态Uri GetUri(类型baseType,字符串relativePath)
{
Assembly oAssembly=Assembly.GetAssembly(baseType);
AssemblyName oName=oAssembly.GetName();
返回新Uri(
字符串格式(
"pack://application:,,,/{0};v{1};组件/{2}“,
奥纳姆,名字,
oName.Version.ToString(),
相对路径),
乌里金(绝对);
}
}
我认为这一行适合您(您忘记了…;组件/…):
供图标使用
Build Action = Resource
Copy to OutputDirectory = Do not copy
我记得有一次类似的问题,但不记得细节。这与包不在bin文件夹中,或者包内的bin文件夹中没有资源有关。抱歉,我现在没有时间查找它。basetype变量是什么?@Nealv basetype是程序集中资源所附加到的任何类型。好的,这项工作谢谢大家准备好了,但不,我还有一个问题。你能检查一下我的问题的编辑吗?@Nealv你在发布之前是否重新发布了整个解决方案?在版本生成配置的configuration manager中是否选中了项目的生成标志?看起来您在服务器上部署了旧程序集。是的,我执行了新生成,并且选中了生成标志。即使在运行visual studio时,也会出现错误。以前,它在visual studio中工作。通过运行以下行:iconUri=newURI(“pack://application:,,,/SwitchLive;组件/images/local_network.ico“,UriKind.Relative);我得到:'在类型'SwitchLive.MainWindow'上调用与指定绑定约束匹配的构造函数时引发了异常。'行号'3'和行位置'9'。该问题已全部解决,我有一个新问题,请检查我的@Edit:)
Build Action = Resource
Copy to OutputDirectory = Do not copy