如何在C#项目中建立一个具有自定义文件扩展名的DLL?

问题描述 投票:1回答:1

有没有办法将C# DLL项目(visual studio)编译成一个具有自定义扩展名的文件? 例如plugin.cpx代替plugin.dll (cpx =) 。C睾丸 P负载eX张力!)。)

而且我可以使用任何我想要的扩展名吗?

c# visual-studio dll
1个回答
2
投票

我把这个作为一个新的答案,因为它就是这样。而且它比我之前提供的要简单得多, 在很多方面.

你可以通过手动编辑项目的 .csproj 文件。

在 "解决方案资源管理器 "中,右击项目并选择 "卸载项目 "命令。然后,再次右键单击并选择 "编辑MyProject.csproj"(其中 "MyProject "显然是实际名称)。

要使扩展更改适用于 配置或平台,在文件顶部附近添加以下三行(就在其他文件的第一行之前)。PropertyGroup 条目)。)

  <PropertyGroup>
    <TargetExt>.cpx</TargetExt>
  </PropertyGroup>

然后保存文件,关闭它,并 "重新加载 "项目(再次。通过 在 "解决方案资源管理器 "中右键单击)。)

要只为特定的配置或平台更改扩展,可在解决方案资源管理器中添加 TargetExt 内行 PropertyGroup 相关的配置。


1
投票

我可以使用任何我想要的扩展吗?

是的,你可以,但这有点 "棘手"。

对于C#项目,你需要添加一个自定义的 "Post Build Event "来重命名输出文件。对于DLL项目(就像你的项目一样),你可以在 "属性 "窗口的 "Build事件 "选项卡中添加一个类似于下图所示的后构建命令。

enter image description here

注意:一定要在 "属性 "窗口的 "编译事件 "选项卡中使用 $(TargetName) 宏。 $(TargetFileName)因为后者将隐含地包括了""。.dll 扩展。但你可以使用。

rename "$(TargetDir)$(TargetFileName)" "$(TargetName).cpx"

EDIT: 另外,你需要告诉构建者删除任何旧版本的... .cpx 文件,在某个阶段。这可以作为一个预构建事件来完成,如下所示。

IF EXIST "$(TargetDir)$(TargetName).cpx" del "$(TargetDir)$(TargetName).cpx"

如果不这样做,重命名输出文件的尝试就会失败(因为新的 "目标 "已经存在)。

EDIT-2: 正如OP的评论中所提到的,如果不加入 " 引号,如果文件路径中有空格,则构建前和构建后命令将失败。

© www.soinside.com 2019 - 2024. All rights reserved.