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

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

是否可以将C#DLL项目(Visual Studio)编译为具有自定义扩展名的文件?例如plugin.cpx而不是plugin.dll(cpx = C ustom P lugin e X张力!)

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

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

我将其添加为新答案,因为仅此而已。而且在许多方面都比我以前的产品容易得多。

您可以通过手动编辑项目的.csproj文件来明确指定目标扩展名。

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

要使扩展名更改适用于all配置和/或平台,请在文件顶部附近(紧接其他PropertyGroup条目的第一个条目之前)添加以下三行:

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

然后保存文件,将其关闭,然后“重新加载”项目(再次单击“ [via在解决方案资源管理器”中右键单击)。

要仅为特定配置或平台更改扩展名,请在与该配置相关的TargetExt内添加PropertyGroup行。


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

是的,可以,但是有点“棘手”。

对于C#项目,您需要添加一个自定义“生成后事件”以重命名输出文件。对于DLL项目(如您所愿),您可以在“属性”窗口的“构建事件”选项卡中添加如下所示的构建后命令:

enter image description here

注意:请确保使用$(TargetName)宏,

not $(TargetFileName),因为后者将隐式包含.dll扩展名。但您可以使用:

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

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

IF EXIST "$(TargetDir)$(TargetName).cpx" del "$(TargetDir)$(TargetName).cpx"
没有这个,重命名输出文件的尝试将失败(因为新的'目标'已经存在)。

EDIT-2:如OP的注释中所述,如果没有"引号,则如果文件路径中有空格,则pre-build和post-build命令将失败。

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