C# 如何在.NET标准2.0库中包含资产文件?

C# 如何在.NET标准2.0库中包含资产文件?,c#,visual-studio,uwp,csproj,.net-standard,C#,Visual Studio,Uwp,Csproj,.net Standard,我正在将UWP类库迁移到.NET标准2.0库,在获取库中的一些资产文件时遇到一些问题 我已经将它们包含在库项目中一个名为“Dictionaries”的文件夹下,并将它们设置为包含在输出文件夹中。我的library.csproj文件如下所示: <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>netstandard2.0</TargetFramewo

我正在将UWP类库迁移到.NET标准2.0库,在获取库中的一些资产文件时遇到一些问题

我已经将它们包含在库项目中一个名为“Dictionaries”的文件夹下,并将它们设置为包含在输出文件夹中。我的library.csproj文件如下所示:

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <TargetFramework>netstandard2.0</TargetFramework>
      </PropertyGroup>
    <ItemGroup>
        <Content Include="Dictionaries\EN.lst">
            <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
        </Content>
    <ItemGroup>
    ...
我希望Dictionares文件夹与.dll文件在同一个文件夹中,在父AppX文件夹中,但这里不是这样,所以在故事的结尾,我不能使用库中需要的那些资产文件

注意:由于我知道它们的位置,我知道我可以使用正确的路径,但问题是,除非这些文件实际位于AppX文件夹中,否则它们不会包含在最终的.AppX文件中,该文件将分发给用户

我是否遗漏了一些明显的内容,是否有办法指定要复制到已编译应用程序的实际文件夹(AppX文件夹)中的资产文件


谢谢你的帮助

方法1

您可以向后期生成事件添加一些命令,以手动处理要输出的副本

mkdir $(TargetDir)\AppX\Dictionaries
xcopy /y $(ProjectDir)Dictionaries\EN.lst $(TargetDir)AppX\Dictionaries  
基本上,它会在
AppX
文件夹中创建一个目录
dictionary
,然后将EN.lst复制到那里

编辑:我提出了另一个解决方案,您不需要后期生成事件

方法2

由于您正在查看
.csproj
文件,您还可以在
标记中添加一小行:

<Content Include="Dictionaries\EN.lst">
    <Link>AppX\Dictionaries\EN.lst</Link>
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>          
</Content>

AppX\Dictionaries\EN.lst
保存最新
如果愿意,还可以重命名.lst数据

请注意,如果执行方法2,则该文件将从解决方案文件夹中删除。作为解决方法,您可以再次将其添加到项目中。你会喜欢的

<Content Include="Test\Data.xml">
  <Link>Test\renamed.xml</Link>
  <CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="Test\Data.xml">
  <CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>

Test\rename.xml
总是
总是

之后在您的
.csproj
文件中。

谢谢您的建议,尽管我不确定它在我的情况下是否是正确的解决方案,但我的意思是,我不想弄乱默认的UWP编译工具链,因为我过去在没有任何更改的情况下已经遇到了很多问题。@Sergio0694我已经更新了我的答案,还有第二种方法,希望这更适合你:)
<Content Include="Test\Data.xml">
  <Link>Test\renamed.xml</Link>
  <CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="Test\Data.xml">
  <CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>