gpt4 book ai didi

c# - 如何更改 VS 安装项目中包含的 C# 项目输出的文件扩展名

转载 作者:太空宇宙 更新时间:2023-11-03 13:20:35 28 4
gpt4 key购买 nike

我在 Visual Studio 2013 中有一个包含许多不同项目的解决方案。其中之一是 C# 屏幕保护程序,构建为 Windows 应用程序(文件扩展名“.exe”)。现在我希望将该屏幕保护程序打包到一个 visual studio 安装项目中。但在安装项目中,我只能包含 C# 项目的“主要输出”,以便将输出文件原封不动地打包到 msi 文件中。有没有办法在 C# 项目设置或安装程序本身中更改文件扩展名(必须是 .scr)?当我在构建后事件中通过批处理/MSBuild 顺序更改文件名时,无法再找到设置的“主要输出”。奇怪的是:设置中已经有一个选项显示“TargetName”,但它是灰色的,我无法在 IDE 中更改它,而且我也无法在设置项目的项目文件中找到该选项。感谢您的帮助!

编辑 1:

是否有可能完全没有解决方案可以简单地重命名输出文件以将其包含在设置中?

最佳答案

由于我发现绝对没有解决方案来配置我的安装程序以重命名文件,所以我最终创建了一个带有 InstallerClass 的附加 DLL,以便在安装过程中将其作为自定义操作运行。

这是一个很好的示例,如何为遇到类似问题的任何人做这件事

Custom Action in Visual Studio setup projects (Code Project)

我只是在 Install 方法中重命名了该文件,然后在 Uninstall 方法中将其重新重命名,以便正确删除它。

    public override void Install(IDictionary stateSaver)
{
base.Install(stateSaver);
var text = Context.Parameters["ScreensaverPath"];
var file = new FileInfo(text + "MyScreenSaver.exe");
if (!file.Exists)
return;
file.MoveTo(text + "MyScreenSaver.scr");
}

public override void Uninstall(IDictionary savedState)
{
base.Uninstall(savedState);
var text = Context.Parameters["ScreensaverPath"];
var file = new FileInfo(text + "MyScreenSaver.scr");
if (!file.Exists)
return;
file.MoveTo(text + "MyScreenSaver.exe");
}

关于c# - 如何更改 VS 安装项目中包含的 C# 项目输出的文件扩展名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24430591/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com