qui*_*uip 12 msbuild visual-studio
我在用
<ItemGroup>
<EmbeddedResource Include="..\..\resources\hbm\*.hbm.xml" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
将一堆xml文件包含到我的C#项目中.工作良好.
但是,我不希望它们出现在我项目的"根级"中,我宁愿在项目的子文件夹中看到它们.
例如,此文件包含Mapping在Visual Studio 的文件夹中:
<ItemGroup>
<EmbeddedResource Include="Mapping\User.hbm.xml" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
这就是我想要的*.hbm.xml文件.
我无法弄清楚如何做到这一点,仍然保留我的通配符*.hbm.xml部分,并将实际文件保存在不同的目录中.
我查看了MSDN关于MSBUILD和项目的文档,但没有运气.
Ric*_*oss 25
也许这已经在MSBuild中发生了变化,因为最初的答案已经发布,但是可以同时使用通配符和链接.例如,我在C#项目中使用以下块将数据文件导入测试库.
<ItemGroup>
<None Include="..\SOMENAME.Tests\data\**\*.*">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<Link>data\%(RecursiveDir)%(Filename)%(Extension)</Link>
</None>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
到目前为止我唯一看到的缺点是MSBuild在文件系统上重新创建文件夹名称(即$(ProjectPath)\data\somesubfolder),这有点烦人但不是一个大问题.
作为一个测试,我也尝试了OP的嵌入资源的请求,使用下面的代码片段,并且这似乎工作正常 - dotPeek显示除了存在于解决方案资源管理器中之外,编译的程序集中还存在资源.
<ItemGroup>
<EmbeddedResource Include="..\SOMENAME.Tests\data\**\*.*">
<Link>resources\%(RecursiveDir)%(Filename)%(Extension)</Link>
</EmbeddedResource>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
(这是使用Visual Studio 2013)
我认为你不能同时使用链接和通配符.
您可以使用此表示法链接以在Visual Studio中的Mapping文件夹中包含User.hbm.xml文件:
<ItemGroup>
<EmbeddedResource Include="..\..\resources\hbm\User.hbm.xml">
<Link>Mapping\User.hbm.xml</Link>
</EmbeddedResource>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
但你不能这样做
<ItemGroup>
<EmbeddedResource Include="..\..\resources\hbm\**\*.hbm.xml">
<Link>%(RecursiveDir)\%(Filename)%(Extension)</Link>
</EmbeddedResource>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8033 次 |
| 最近记录: |