我们有各种VB.NET解决方案,这些解决方案都有与它们相关联的ClickOnce安装程序,但是我们不需要/不希望保留以前的安装程序构建。因此,我今天所做的就是在项目中添加一个预构建事件,删除安装程序的“应用程序文件”文件夹:
rd /s /q "\\myserver\myapp\Application Files"这个很好,很棒。
现在,我们有了另一种解决方案,即使用自定义编译器常量(通过Visual中的高级编译选项安装)构建--如果存在一个名为APP1的常量,那么它的编译方式与常量APP2存在的情况不同,随后我们为关联的ClickOnce安装程序创建了不同的发布文件夹,因此需要删除与当前构建关联的正确的“应用程序文件”文件夹。
如果存在APP1,则ClickOnce输出文件夹为"\myserver\app1\Application“,如果存在APP2,则ClickOnce输出文件夹为"\myserver\app2\Application”。请注意,这些位置是UNC的设置,并以双“\”开始,但出于某种原因,在这篇文章中没有显示为double!
因此,我一直在研究在构建前事件中访问这些编译器常量,最后得到的结果是:
if "$(DefineConstants.Contains(APP1))" (rd /s /q "\\myserver\App1\Application Files")
if "$(DefineConstants.Contains(APP2))" (rd /s /q "\\myserver\App2\Application Files")因此,如果我将编译器常量设置为App1并尝试进行编译,就会得到:
错误命令"if“"True”(rd /s /q "\myserver\App1\Application Files")如果"False“(rd /s /q”\myserver\App2 2\Application Files")“与代码255一起退出。
我尝试过各种各样的东西,使用时间/选择,使用rmdir等等,但是我总是在255错误的情况下退出;那么,有谁知道为什么这是.更重要的是,知道我怎么才能绕过它吗?
干杯,
克里斯。
发布于 2016-11-22 01:57:29
我创建了一个演示,并在我这边复制您的问题,请修改您的预构建事件如下:
if $(DefineConstants.Contains(APP1)) == True (rd /s /q "\\myserver\App1\Application Files")
if $(DefineConstants.Contains(APP2)) == True (rd /s /q ""\\myserver\App2\Application Files ")https://stackoverflow.com/questions/40725813
复制相似问题