Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VS.Net:;<;myProject>&引用;在安装程序项目中_.net_Visual Studio_Installation_Post Build Event - Fatal编程技术网

VS.Net:;<;myProject>&引用;在安装程序项目中

VS.Net:;<;myProject>&引用;在安装程序项目中,.net,visual-studio,installation,post-build-event,.net,Visual Studio,Installation,Post Build Event,我在项目中使用以下生成后操作将库合并到我的应用程序中: IF $(ConfigurationName) == Debug GOTO end cp $(TargetPath) $(TargetDir)app_unmerged.exe del $(TargetPath) "C:\Program Files\Microsoft\ILMerge\ilmerge.exe" /internalize $(TargetDir)MyApp_unmerged.exe $(TargetDir)someLib.dll

我在项目中使用以下生成后操作将库合并到我的应用程序中:

IF $(ConfigurationName) == Debug GOTO end
cp $(TargetPath) $(TargetDir)app_unmerged.exe
del $(TargetPath)
"C:\Program Files\Microsoft\ILMerge\ilmerge.exe" /internalize $(TargetDir)MyApp_unmerged.exe $(TargetDir)someLib.dll /out:$(TargetDir)myApp.exe
del $(TargetDir)myApp_unmerged.exe $(TargetDir)someLib.dll
:end
这个很好用。现在我有了一个安装程序项目,并添加了项目输出。我希望使用“主输出自”,即/bin/Release中的exe。但实际上使用的不是/bin/release/myApp.exe,而是/obj/release/myApp.exe


有人知道我是否可以更改此行为并将/bin/release中的输出用于安装程序项目吗?谢谢

我显式地放置文件,这意味着它没有告诉安装项目使用primery内容,而是显式地放置.exe/.dll文件。

这很好,我可以控制输入哪个文件以及安装项目用户的相对路径,这样安装项目就可以在其他机器上使用。

似乎没有解决这个问题的真正方法,但存在一个解决方法。我在Microsoft connect上创建了一个票证:

微软anwser:

为了执行这些生成后操作,您需要将它们放在批处理文件中,然后添加appropiate命令以在生成后事件对话框中调用批处理文件。我看到脚本中有几个实例引用了许多VisualStudio变量。由于我们不将这些变量作为环境变量公开,因此必须将它们作为参数传递给批处理文件

我希望这有帮助

蒋糖果
Program Manager-Visual Studio我解决了在/obj文件夹中应用Ilmerge的问题,这是我的生成后事件配置:

复制$(ProjectDir)obj\$(PlatformName)\$(ConfigurationName)\$(TargetFileName)$(TargetDir)temp.exe $(solutionDir)\lib\ilmerge/wildcards/t:exe/out:“$(ProjectDir)obj\$(PlatformName)\$(ConfigurationName)\$(TargetFileName)”“$(TargetDir)temp.exe”“$(TargetDir)log4net.dll”“$(TargetDir)other.dll”
DEL$(TargetDir)temp.exe

虽然这可以工作,但其代价是无法使用不同的生成配置,因为不同配置的文件位置不同。目前我有一个Debug、Release和EvaluationRelease配置。我知道,我们只安装Release。顺便说一句,大多数项目已经转移到Wix3,你首先需要更加努力,但你可以控制一切。该链接似乎不是公开的(“你请求的内容找不到,或者你没有查看它的权限”)。既然我们其他人看不到它,你应该把它从你的答案中删除。