C# 是否可以使用MSBuild+;创建msi安装程序。csproj文件?
对于没有安装和部署项目模板的使用Visual Studio Express的用户,是否可以使用.csproj文件轻松创建msi安装程序?我已经读到(现在找不到链接)MSBuild可以使用csproj文件(它被MSBuild转换为MSBuild项目文件)-那么InstallShield、WIX或安装和部署项目需要什么呢C# 是否可以使用MSBuild+;创建msi安装程序。csproj文件?,c#,.net,visual-studio,deployment,msbuild,C#,.net,Visual Studio,Deployment,Msbuild,对于没有安装和部署项目模板的使用Visual Studio Express的用户,是否可以使用.csproj文件轻松创建msi安装程序?我已经读到(现在找不到链接)MSBuild可以使用csproj文件(它被MSBuild转换为MSBuild项目文件)-那么InstallShield、WIX或安装和部署项目需要什么呢 我意识到这可能是一个简单的问题,但搜索web只会找到为什么需要MSBuild的解释——这已经包含在框架本身中了。不,我认为Express没有任何方法可以做到这一点。它不是内置功能,
我意识到这可能是一个简单的问题,但搜索web只会找到为什么需要MSBuild的解释——这已经包含在框架本身中了。不,我认为Express没有任何方法可以做到这一点。它不是内置功能,您不能在Express中使用外接程序。我认为WiX将是这里的最佳选择。使用Wix构建安装程序基本上是对candle.exe和light.exe的简单调用,这样就可以在.csproj中的自定义MSBuild目标中自动执行安装程序,而不会出现任何问题 但是,它需要设置.wixproj项目通常会设置的环境。例如,您需要找到WixSDK以使用candle/light二进制文件,并将$(OutputPath)属性传递给candle.exe,以便在.wxs中使用输出文件 毕竟,会有这样一个目标启动安装程序构建:
<Target Name="AfterBuild" Condition="'$(Configuration)' == 'Release'">
<Exec Command="$(candleExecutable) product.wxs" />
<Exec Command="$(lightExecutable) product.wixobj" />
</Target>
您还可以向该目标添加一个条件,以便仅在特定配置上调用该条件。首先进行一些澄清:
- csproj是一个MSBuild项目文件,大多数VisualStudio项目文件(包括WiX项目)也是如此。.sln文件不是MSBuild项目文件,但MSBuild会将其转换为项目文件李>
- 从最新版本开始,MSBuild不再是.NET Framework的一部分。它现在在MS Build Tools中,这是一个独立的免费产品
- 即使使用Visual Studio Express,也可以充分利用MSBuild。Express不允许对Visual Studio进行非Microsoft扩展。WiX工具集确实提供了MSBuild目标/任务文件和Visual Studio扩展。因此,使用Express,您没有WiX项目模板扩展器和编辑器
最终,没有安装工具可以查看您的编程项目并为您决定要发送哪些文件以及将它们放置在何处。因此,不,您不能简单地通过引用.csproj来设计和构建MSI。您使用的是哪个版本的Visual Studio?从VS2012开始,不支持安装和部署项目。此外,CSPROJ文件是MSBUILD项目,与MSI不同。@JohnSaunders谢谢。但正如我所说,我使用的是从未安装过项目的Express版本。我知道csproj文件不是msi。我的问题是-MSBuild(使用csproj文件,或者实际上以任何方式)可以创建msi吗。我正在尝试将我的exe文件设置为“已安装”,以便任何用户帐户都可以访问它(与clickonce相反)。不,我不相信Express有任何方法可以做到这一点。它不是内置功能,您不能将外接程序与Express一起使用。@JohnSaunders,谢谢。基于MSI的安装程序包含更多元数据,用于指定应如何安装某个对象,而MSBuild脚本不是为此而设计的。安装技术的目标是填补空白。