Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 图标不';出版后不工作_C#_Wpf_Icons - Fatal编程技术网

C# 图标不';出版后不工作

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

我有一个简单的应用程序。单击按钮时,tasbar图标会更改。当我从visual studio运行此应用程序时,一切正常,但当我发布WPF应用程序时,任务栏图标不起作用(没有)

构建操作设置为“embedded resource/copy always”,我也测试了“resource”,但它不起作用

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