小编Seb*_*ERT的帖子

来自generic.xaml的样式不适用

我创建了一个类库程序集,我在其中创建了自定义控件,并在generic.xaml文件中定义了默认样式.

这似乎是一个相当普遍的问题,只要有很多人发布它.但是我找不到任何有用的答案.

  • generic.xaml位于Themes文件夹中.
  • generix.xaml文件Build Action设置为Page.
  • ThemeInfo在我的AssemblyInfo.cs中正确定义.

在我的测试应用程序中,如果我手动将我的自定义控件程序集中的generic.xaml文件合并到应用程序App.xaml文件中,如下所示:

<Application.Resources>
  <ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
      <ResourceDictionary Source="/MyControlsAssembly;component/Themes/generic.xaml"/>
    </ResourceDictionary.MergedDictionaries>
  </ResourceDictionary>
</Application.Resources>
Run Code Online (Sandbox Code Playgroud)

然后自定义控件正确主题,但如果我不手动合并generic.xaml,控件将显示默认的Windows主题.

你能告诉我我忘记和/或做错了什么吗?

附加信息:

  • 我的ThemeInfo程序集属性定义如下:

    [assembly: ThemeInfo(ResourceDictionaryLocation.SourceAssembly, ResourceDictionaryLocation.SourceAssembly)]

    (注意:结果与ThemeInfo属性的任何参数组合相同)

  • Themes文件夹中的generic.xaml文件旁边还有另外两个.xaml文件.

  • Themes文件夹中有一个子文件夹,它本身包含另一个.xaml文件.

wpf themes styles generic.xaml

18
推荐指数
2
解决办法
1万
查看次数

在构建任务之前是否预先安装了.NET Core CLI?

这个问题

我认为,当msbuild即将编译源代码文件,它产生的文件来构建,基于名单IncludeExclude项目的规则.

有没有办法在评估要编译的文件列表之前执行任务?

这是为了能够生成源代码文件并使其在构建中获取.

目前的研究和试验

我正在制作一个.NET Core CLI工具,必须在使用它的项目构建之前运行,因为它(CLI工具)生成一个必须包含在构建中的文件.

该项目是使用新.csproj系统创建的,而不是旧系统project.json.

与我的.NET Core CLI工具项目一起,我创建了一个用于测试目的的库项目.

如果我.csproj在测试库中添加它:

<ItemGroup>
    <DotNetCliToolReference Include="MyCliTool" Version="x.x.x" />
    <!-- here x.x.x is just a placeholder -->
</ItemGroup>

<Target Name="MyCliToolTarget" AfterTargets="Restore" BeforeTargets="BeforeBuild">
    <Exec Command="dotnet my-cli-tool" />
</Target>
Run Code Online (Sandbox Code Playgroud)

然后,如果之前不存在,则不会在编译中考虑CLI工具生成的文件.这意味着当文件存在时,它可以,但这也意味着第一次构建(克隆,清理或什么之后)总是会失败.

我尝试了几个不同的目标,BeforeTargets但我找不到让它工作的方法.我试图InitialTargetsProject节点中设置我的目标,但它也不起作用.我试图OutputsTarget节点的属性设置为CLI工具生成的文件名,但同样,它失败了.

我发现唯一有效的解决方案是手动添加Compile指令,如下所示:

<ItemGroup>
    <Compile Include="MyGeneratedFile.cs" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

此解决方案暂时没问题,但文件名可能会根据CLI工具选项而改变,这会使两个地方的文件名必须在更改时更新,如下所示:

<ItemGroup>
    <Compile Include="PATH\TO\CUSTOM_FILENAME_HERE.CS" />
    <DotNetCliToolReference Include="MyCliTool" Version="x.x.x" />
</ItemGroup>

<Target Name="MyCliToolTarget" …
Run Code Online (Sandbox Code Playgroud)

.net msbuild task dotnet-cli visual-studio-2017

12
推荐指数
1
解决办法
3116
查看次数