【问题标题】:How to get list of possible strings when parameter is a string当参数是字符串时如何获取可能的字符串列表
【发布时间】:2017-10-23 10:59:10
【问题描述】:

为了以编程方式将文件包含到项目中,我使用此答案中提供的方法https://stackoverflow.com/a/23537007/1317323

现在我需要更进一步,将 xaml 文件和 xaml.cs 文件添加到我的项目中。

我需要知道AddItem() 方法中接受的字符串是什么,以便以正确的方式包含这两个文件。类似的东西

p.AddItem("Page", "so.xaml");
// or
p.AddItem("Xaml", so.xaml");

当我使用经典的视觉工作室“右键单击/添加新项目”方式时,我在 csproj 文件中得到了这个

<ItemGroup>
  <Page Include="example.xaml">
    <SubType>Designer</SubType>
    <Generator>MSBuild:Compile</Generator>
  </Page>
</ItemGroup>
<Compile Include="example.xaml.cs">
  <DependentUpon>example.xaml</DependentUpon>
</Compile>

我没有运气阅读 msdn。

我正在寻找一个表格,该表格将给定项目类型的第一个参数值或构造此类表格的方法。

【问题讨论】:

  • 如果它是一个 XAML 文件,并且根标签有一个 x:Class 属性,那么可能有一个 .xaml.cs 文件——但我不能说你是否可以保证它会有除“.cs”后缀外,其他名称相同。没有这些东西的大表,也没有从第一原理中推断出任何东西的通用方法。当您将 UserControl(例如)添加到 WPF 项目时,向导会创建 .xaml 和 .xaml.cs。创建窗口的向导也是如此。添加资源字典时,该字典仅添加 .xaml。就个人而言,当用户添加“foo.xaml”时,我会寻找“foo.xaml.cs”。
  • ...或者在添加“foo.bar”时,我可能会寻找“foo.bar.*”。也许吧。

标签: c# .net


【解决方案1】:

我能够使用 Microsoft 的另一个命名空间来做到这一点。

解决方案就是基于这个one

而不是用

来操纵我的解决方案
 Microsoft.Build.Evaluation.Project

我用

Microsoft.VisualStudio.Shell.Interop

现在我操纵

EnvDTE.Project

我可以使用

_currentProject.ProjectItems.AddFromFile(path);

如果我使用同名的 xaml 和 xaml.cs 文件执行两次,则会自动嵌套。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-20
    • 2018-07-21
    • 1970-01-01
    • 2015-04-24
    • 2021-07-14
    • 2012-05-03
    • 1970-01-01
    相关资源
    最近更新 更多