我在一个WPF C#项目上使用Visual Studio 2019作为一个win应用程序。此应用程序配置为旧风格而不是SDK风格的项目。我想有所有的DLL文件嵌入到可执行文件,所以我可以只有一个单一的exe文件。这在Visual Studio 2022和新的SDK样式项目中不再有效。出于某种原因,同样的解决方案在那里行不通。
我尝试了我在以前的项目中所做的同样的事情:
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Target Name="AfterResolveReferences">
<ItemGroup>
<EmbeddedResource Include="@(ReferenceCopyLocalPaths)" Condition="'%(ReferenceCopyLocalPaths.Extension)' == '.dll'">
<LogicalName>%(ReferenceCopyLocalPaths.DestinationSubDirectory)%(ReferenceCopyLocalPaths.Filename)%(ReferenceCopyLocalPaths.Extension)</LogicalName>
</EmbeddedResource>
</ItemGroup>
</Target>
字符串
现在有了VS 2022和SDK风格的项目,我需要在.vcproj文件中更改更多的东西来获得相同的功能,我必须获得单文件应用程序功能。
Import标记不再起作用,因为它表示无论如何都要添加目标,所以它是重复的。我发现了一种方法,不使用它,并有目标是在年底的建设阶段。
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
<Exec Command="echo executing the post build event" />
<ItemGroup>
<EmbeddedResource Include="@(ReferenceCopyLocalPaths)"
Condition="'%(ReferenceCopyLocalPaths.Extension)' == '.dll'">
<LogicalName>%(ReferenceCopyLocalPaths.DestinationSubDirectory)%(ReferenceCopyLocalPaths.Filename)%(ReferenceCopyLocalPaths.Extension)</LogicalName>
</EmbeddedResource>
</ItemGroup>
</Target>
型
现在的问题是,由于某种原因,嵌入式的东西不起作用,我在互联网上找不到任何地方解决这个问题。就像每个人都在使用旧的方法,就是这样。也许再也不可能了。
以下是14年前的一篇文章:Embedding DLLs in a compiled executable
1条答案
按热度按时间sczxawaw1#
Costura fody仍然适用,如果你想只嵌入参考,只需在nuget包中下载即可。
只需将其安装到项目中并构建源代码,它就会将所有引用DLL嵌入到可执行文件中。无需额外步骤。