首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xbuild未能嵌入来自共享项目的资源。

xbuild未能嵌入来自共享项目的资源。
EN

Stack Overflow用户
提问于 2017-04-27 09:15:13
回答 1查看 236关注 0票数 0

我在FolderA中有一个FolderA项目A,它引用一个共享项目B。共享项目的文件位于FolderB中。共享项目B包含一个具有以下属性的文件C.gz

构建动作嵌入式资源 复制到输出目录不复制

当我尝试使用x build (特别是4.8和4.8.1版本,x86和x64体系结构)构建项目A时:

代码语言:javascript
复制
xbuild A.csproj

我得到以下构建错误:

C:\Program (x86)\Mono\lib\mono\xbuild\14.0\bin\Microsoft.Common.targets (CopyNonResxEmbeddedResources目标) -> C:\Program (x86)\Mono\lib\mono\xbuild\14.0\bin\Microsoft.Common.targets:错误:无法将FolderA\C.gz复制到FolderA\obj\Release\C.gz,因为源文件不存在。

也就是说,xbuild搜索FolderA中的嵌入式资源文件,尽管它显然与共享项目B的其他文件一起位于FolderB中。

将嵌入式资源文件移动到项目A并不是一个可行的选择,因为共享项目也是从其他几个项目中引用的。

为了成功地使用xbuild成功地构建项目A,我还能做些什么吗?

附带注意:这是xbuild中的一个预期行为,还是一个bug?对于msbuild,我没有这个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-03 06:34:05

这个问题似乎是当前xbuild实现中的一个缺陷,因此我需要针对这个问题应用一个特定的解决方案。

由于xbuild期望嵌入的资源文件可以在FolderA文件夹中使用,所以我只需在项目文件中添加一个预构建步骤:

代码语言:javascript
复制
<ItemGroup>
  <FilesToCopy Include="..\FolderB\C.gz" />
</ItemGroup>
<Target Name="BeforeBuild">
  <Copy SourceFiles="@(FilesToCopy)" DestinationFolder="."/>
</Target>

另外,还可以考虑在构建后通过删除生成后复制的文件来进行清理。

Note!为了确保预构建步骤的定义正确,请确保将其放在该行后面:

代码语言:javascript
复制
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43653553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档