3

我使用 Visual Studio 2012,我刚刚将我的部署工具从 NSIS 切换到 InstallShield。我已将新项目添加到我的 InstallShield 安装程序解决方案中。当我在 Visual Studio(IDE)中构建时,我没有错误,没有警告,我很高兴。

现在,我想要一个脚本来构建完整的解决方案,而无需启动 IDE。但是当我在命令行中运行 MSBuild 时,就像这样

MSBuild MySolution.sln /t:Build /p:Configuration=Release

我收到以下错误 MSB4062

C:\Program Files (x86)\MSBuild\InstallShield\2012SpringLimited\InstallShield.targets(21,3): error MSB4062: The "Microsoft.Build.Tasks.AssignProjectConfiguration" task could not be loaded from the assembly Microsoft.Build.Tasks.v3.5. Could not load file or assembly 'Microsoft.Build.Tasks.v3.5' or one of its dependencies. The system cannot find the file specified. Confirm that the <UsingTask> declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask.

我的搜索使我得出结论,我必须购买 Premier Edition 的 InstallShield 才能从 ISCmdBuild 中获利。但我买不起,我认为可能还有另一种解决方案。

任何的想法?

4

3 回答 3

5

在此处使用 Fusion 记录 MSBuild 检查 DLL:file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Microsoft.Build.Tasks.v3.5.DLL。

我将 c:\Windows\Microsoft.NET\Framework\v3.5\Microsoft.Build.Tasks.v3.5.dll 复制到 c:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Build.Tasks。 v3.5.dll

并且错误消失了。

或者打开您的 *.isproj 文件并在标签顶部从“3.5”更改为“4.0”:

<Project ToolsVersion="3.5"...> --> <Project ToolsVersion="4.0" ...>
于 2014-02-06T09:43:02.597 回答
3

另一种解决方案是强制 MSBuild 使用 x86 平台。见https://stackoverflow.com/a/1074699/870604

如果您从 TFS 构建构建,则可以从构建选项配置:

在此处输入图像描述

于 2014-01-07T14:42:37.590 回答
2

我找到了解决方案。使用命令devenv.exe而不是MSBuild.exe. 这类似于启动 Visual Studio 并单击“构建”按钮。就这样!

devenv.exe MySolution.sln /build Release
于 2013-10-15T14:17:45.940 回答