Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.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
如何在WPF中为来自不同项目的文件指定路径?_Wpf_Visual Studio_Path - Fatal编程技术网

如何在WPF中为来自不同项目的文件指定路径?

如何在WPF中为来自不同项目的文件指定路径?,wpf,visual-studio,path,Wpf,Visual Studio,Path,我在WPF中有两个项目,一个项目是主项目,第二个项目只是用于测试(它使用主项目的文件-通过project->add->Existing items…->selected file->add as链接添加文件,这样文件实际上只在主项目中) 包含项目的文件夹包括: C:\Work\...\Projects\Main C:\Work\...\Projects\XXXTestProject 其中XXX代表我单独测试的主要项目的不同部分 我有密码: <Window x:Class="Sokoban

我在WPF中有两个项目,一个项目是主项目,第二个项目只是用于测试(它使用主项目的文件-通过project->add->Existing items…->selected file->add as链接添加文件,这样文件实际上只在主项目中)

包含项目的文件夹包括:

C:\Work\...\Projects\Main
C:\Work\...\Projects\XXXTestProject
其中XXX代表我单独测试的主要项目的不同部分

我有密码:

<Window x:Class="Sokoban.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:Sokoban"
    xmlns:diag="clr-namespace:System.Diagnostics;assembly=WindowsBase"
    Title="Window1" Height="559" Width="419">
    <Window.Resources>        
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="GameDesk.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Window.Resources>

    <Grid>        
        <Rectangle local:GameDeskProperties.FieldSize="30" Name="myrect" Style="{DynamicResource GameDesk}" MouseEnter="Rectangle_MouseEnter" />
    </Grid>
</Window>

。。。它应该使用GameDesk.XAML中的XAML资源,该资源位于主项目中,并且似乎我不能使用packURI()。如何指定该文件

  • 我应该使用绝对路径吗?(C:\Work…\Main\Resources\GameDesk.xaml)

  • 或者还有别的办法吗

谢谢你的帮助

使用以下格式的pack://URI:

pack://application:,,,/ReferencedAssembly;组件/子文件夹/ResourceFile.xaml

如果XAML位于引用的程序集中

pack://siteoforigin:,,,/子文件夹/SiteOfOriginFile.xaml


如果XAML是松散的并复制到bin文件夹中。

那么您已经将GameDesk.XAML作为链接文件添加到测试项目中了吗?是的。测试项目的每个重要部分都应该来自主项目。我想使用第一个选项,但我认为它在我的情况下不起作用,因为我没有将这两个项目放在一个解决方案下。这两个项目都是独立的解决方案。在我的场景中会是什么样子?非常感谢。不必在同一个解决方案中,只需添加对DLL的引用。但如果必须编译它(“对DLL的引用”),则我无法在测试项目中进行更改(这实际上意味着在主项目中)。到目前为止,我已经在VS中设置了预构建事件,用于复制所需的文件,这不是一个好的解决方案,但它可以工作,并且通过相对路径进行复制,以便保持可移植性。您可以在bin中添加对DLL的引用或添加引用路径。-这不是一个问题,也与WPF无关-只是一个可以解决的常见.NET引用路径问题。如果正确执行引用,则更新DLL时会更新引用。