Project1.csproj包含一个import语句,应该(在理想情况下)导入Project2:
<Import Project="Project2.targets"/>
Project2.targets只包含资源导入列表:
<Project DefaultTargets="BeforeBuild"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="BeforeBuild">
<ItemGroup>
<Resource Include="resources\logo.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="resources\icon.ico" />
</ItemGroup>
</Target>
</Project>
在Project1中,元素使用这些Project2定义的资源,例如图标。即使构建成功,资源也不会包含在最终的可执行文件中。
我究竟做错了什么?使用ItemGroup资源定义替换Project1.csproj中的import语句会导致工作程序。
我的目标是导入外部定义的资源列表,我认为可以通过导入另一个项目来完成。
答案 0 :(得分:2)
导入不是问题所在:导入文件类似于将其内容复制到导入发生的位置。问题是资源项目正在目标中添加:
因此,将ItemGroup移出目标会修复此问题,如果您想深入了解根本原因,可以通过Message任务对一些日志进行检测。