是否可以将C#DLL项目(Visual Studio)编译为具有自定义扩展名的文件?例如plugin.cpx而不是plugin.dll(cpx = C ustom P lugin e X张力!)
而且我可以使用任何我想要的扩展名吗?
我将其添加为新答案,因为仅此而已。而且在许多方面都比我以前的产品容易得多。
您可以通过手动编辑项目的.csproj
文件来明确指定目标扩展名。
在“解决方案资源管理器”中,右键单击项目,然后选择“卸载项目”命令。然后,再次右键单击并选择“ Edit MyProject.csproj”(显然,“ MyProject”将是实际名称)。
要使扩展名更改适用于all配置和/或平台,请在文件顶部附近(紧接其他PropertyGroup
条目的第一个条目之前)添加以下三行:
<PropertyGroup>
<TargetExt>.cpx</TargetExt>
</PropertyGroup>
然后保存文件,将其关闭,然后“重新加载”项目(再次单击“ [via在解决方案资源管理器”中右键单击)。
要仅为特定配置或平台更改扩展名,请在与该配置相关的TargetExt
内添加PropertyGroup
行。
而且我可以使用任何我想要的扩展名吗?
是的,可以,但是有点“棘手”。
对于C#项目,您需要添加一个自定义“生成后事件”以重命名输出文件。对于DLL项目(如您所愿),您可以在“属性”窗口的“构建事件”选项卡中添加如下所示的构建后命令:
注意:请确保使用$(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命令将失败。