有没有办法将C# DLL项目(visual studio)编译成一个具有自定义扩展名的文件? 例如plugin.cpx代替plugin.dll (cpx =) 。C睾丸 P负载eX张力!)。)
而且我可以使用任何我想要的扩展名吗?
我把这个作为一个新的答案,因为它就是这样。而且它比我之前提供的要简单得多, 在很多方面.
你可以通过手动编辑项目的 .csproj
文件。
在 "解决方案资源管理器 "中,右击项目并选择 "卸载项目 "命令。然后,再次右键单击并选择 "编辑MyProject.csproj"(其中 "MyProject "显然是实际名称)。
要使扩展更改适用于 都 配置或平台,在文件顶部附近添加以下三行(就在其他文件的第一行之前)。PropertyGroup
条目)。)
<PropertyGroup>
<TargetExt>.cpx</TargetExt>
</PropertyGroup>
然后保存文件,关闭它,并 "重新加载 "项目(再次。通过 在 "解决方案资源管理器 "中右键单击)。)
要只为特定的配置或平台更改扩展,可在解决方案资源管理器中添加 TargetExt
内行 PropertyGroup
相关的配置。
我可以使用任何我想要的扩展吗?
是的,你可以,但这有点 "棘手"。
对于C#项目,你需要添加一个自定义的 "Post Build Event "来重命名输出文件。对于DLL项目(就像你的项目一样),你可以在 "属性 "窗口的 "Build事件 "选项卡中添加一个类似于下图所示的后构建命令。
注意:一定要在 "属性 "窗口的 "编译事件 "选项卡中使用 $(TargetName)
宏。不 $(TargetFileName)
因为后者将隐含地包括了""。.dll
扩展。但你可以使用。
rename "$(TargetDir)$(TargetFileName)" "$(TargetName).cpx"
EDIT: 另外,你需要告诉构建者删除任何旧版本的... .cpx
文件,在某个阶段。这可以作为一个预构建事件来完成,如下所示。
IF EXIST "$(TargetDir)$(TargetName).cpx" del "$(TargetDir)$(TargetName).cpx"
如果不这样做,重命名输出文件的尝试就会失败(因为新的 "目标 "已经存在)。
EDIT-2: 正如OP的评论中所提到的,如果不加入 "
引号,如果文件路径中有空格,则构建前和构建后命令将失败。