wpf 棱镜 mef visual studio 项目文件

wpf prism mef visual studio project file

我有一个 WPF/Prism 4.0/MEF(MVVM) 应用程序。一切 runs/loads 都很好,除了我更改项目文件时。

有效的版本包含以下内容,但项目浏览器未将 *.cs 代码隐藏文件正确加载到树层次结构中。代码隐藏文件插入到与 *.xaml 文件相同的树级别:

<ItemGroup>
   <Compile Include="Models\MainProjectDataModel.cs" />
   <Compile Include="ViewModels\MainProjectDataViewModel.cs" />
   <Compile Include="ViewModels\MainWindowViewModel.cs" />
   <Compile Include="Views\MainMenuView.xaml.cs" />
   <Compile Include="Views\MainProjectDataView.xaml.cs" />
   <Compile Include="Views\MainToolbarView.xaml.cs" />
   <Page Include="Views\MainMenuView.xaml">
     <Generator>MSBuild:Compile</Generator>
     <SubType>Designer</SubType>
   </Page>
   <Page Include="Views\MainProjectDataView.xaml">
     <Generator>MSBuild:Compile</Generator>
     <SubType>Designer</SubType>
   </Page>
   <Page Include="Views\MainToolbarView.xaml">
     <Generator>MSBuild:Compile</Generator>
     <SubType>Designer</SubType>
   </Page>
</ItemGroup>

此版本正确加载了树,但在 compile/generation 期间破坏了某些内容 - 因此找不到与 menu/toolbar/data 关联的区域:

<ItemGroup>
   <Compile Include="Models\MainProjectDataModel.cs" />
   <Compile Include="ViewModels\MainProjectDataViewModel.cs" />
   <Compile Include="ViewModels\MainWindowViewModel.cs" />
</ItemGroup>

<ItemGroup>
   <Page Include="Views\MainMenuView.xaml">
     <Generator>MSBuild:Compile</Generator>
     <SubType>Designer</SubType>
   </Page>
   <Page Include="Views\MainProjectDataView.xaml">
     <Generator>MSBuild:Compile</Generator>
     <SubType>Designer</SubType>
   </Page>
   <Page Include="Views\MainToolbarView.xaml">
     <Generator>MSBuild:Compile</Generator>
     <SubType>Designer</SubType>
   </Page>
</ItemGroup>    

我已经尝试将“”标记添加到已编译的文件中(遵循 app.xaml 和 Shell.xaml 的生成代码,但树仍然未正确填充。

<Compile Include="Views\MainMenuView.xaml.cs">
  <DependentUpon>Views\MainMenuView.xaml</DependentUpon>
</Compile>
<Compile Include="Views\MainProjectDataView.xaml.cs">
  <DependentUpon>Views\MainProjectDataView</DependentUpon>
</Compile>
<Compile Include="Views\MainToolbarView.xaml.cs"> 
  <DependentUpon>Views\MainToolbarView.xaml</DependentUpon>
</Compile>
<Page Include="Views\MainMenuView.xaml">
  <Generator>MSBuild:Compile</Generator>
  <SubType>Designer</SubType>
</Page>
<Page Include="Views\MainProjectDataView.xaml">
  <Generator>MSBuild:Compile</Generator>
  <SubType>Designer</SubType>
</Page>
<Page Include="Views\MainToolbarView.xaml">
  <Generator>MSBuild:Compile</Generator>
  <SubType>Designer</SubType>
</Page>

当然,这是一个烦恼,而不是真正的错误 - 但有什么用呢?我找到了有关 MSBuild 的文档 - 希望这是正确的地方。我对吗?那里有很多东西,我不想现在就全部看完 - 有谁知道我应该看文档中的什么地方或者这里发生了什么?

删除DependentUpon节点的Views\部分:

<Compile Include="Views\MainToolbarView.xaml.cs"> 
  <DependentUpon>MainToolbarView.xaml</DependentUpon>
</Compile>

Include 需要一个相对于项目文件的路径,而 DependentUpon 是一个相对于 .cs 文件的路径 - 所以在几乎所有情况下,这些文件都将彼此相邻,因此不需要额外的路径命名法。