我目前有一个如下构建设置,允许我将所有引用DLL作为嵌入资源嵌入到我的程序集中。它在AfterResolveReferences
目标上运行,并且运行完美。它还允许我生成一个不需要任何额外的DLL来启动的可执行文件(因为它在运行时加载它们)。
现在,我想包括PDB信息。我已经使用所有引用的程序集执行此操作,但不是我正在构建的程序集,因为(出于显而易见的原因)在目标之后生成。
回顾一下:
这有可能吗?我知道这可能会引发双重构建。
答案 0 :(得分:3)
我最终将以下内容写入我的项目文件 - 完美无缺地工作。它做了双重构建,但它确实有效。
quantity > 0
答案 1 :(得分:1)
如果双重编译不是问题,你可以创建自己的目标,通过msbuild任务编译到temporay文件夹,然后从这个临时文件夹中嵌入你需要的文件。
您必须进行重建,否则它将缓存程序集。
在.proj文件中编译的目标如下所示:
<Target Name="YourBuild">
<MSBuild Projects="YourProject.csproj" Targets="Build"
Properties="Configuration=Debug;OutputPath=tmp"/>
<MSBuild Projects="YourProject.csproj" Targets="Rebuild"
Properties="Configuration=Debug"/>
</Target>
项目中BeforeBuild目标中包含为EmbeddedResoucre的文件:
<Target Name="BeforeBuild">
<ItemGroup>
<YourFiles Include="tmp\*.pdb" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="@(YourFiles ->'%(Relativedir)%(filename)%(extension)')"/>
</ItemGroup>
</Target>