我已经构建了一个自定义的msbuild deploy.targets文件,该文件允许我将生成的二进制文件发布到我在命令行中指定的目录。这意味着如果我跑
$> msbuild / p:DestServer = \ myserver \ final-dest
然后我的项目将被编译,生成的* .dll将被复制到一个临时实例 - 在这种情况下是myserver上的目录final-dest。我想要这个功能,因为当我进行良好的编译时,我想在该目录中获得* .dll的副本,但我也希望它们是本地的。
这是我的问题 - 我真的不想从命令行发出这个问题。当我选择Release Build Configuration(项目|属性|构建)时,我希望能够指定/ p:DestServer = \ myserver \ final-dest作为msbuild将使用的参数,因为它会执行正常构建。
我在哪里指定这个?
在项目属性中|构建事件,我可以指定预构建或后构建事件 - 但这不是“构建”事件的一部分吗?
理想情况下,如果有人可以在Visual Studio 2010中给我菜单序列,我会很感激。
答案 0 :(得分:4)
如果您不想编辑项目文件 - 还有另一种解决方案。
每个* .csproj文件都包含:<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
。
在我的电脑和.Net 4.0上,此文件位于"C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.CSharp.targets"
在PropertyGroup
内添加新的Project
,如:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
...
<PropertyGroup>
<DestServer>\myserver\final-dest</DestServer>
</PropertyGroup>
...
<!-- a lot of stuff -->
...
</Project>
现在所有的构建(来自MSBuild和Visual Studio)都将使用此属性,因此您无需修改.csproj或从命令行传递args
<强>更新强>
这是一种快速而肮脏的方式,因为它将覆盖该PC上构建的所有项目。 只有这样做,如果有很多项目并且你没有权限修改它们
通常,您只需在单个项目中添加新的PropertyGroup
。
如果您需要此变量的项目很多,则可以创建并导入自定义扩展目标 bellow 默认目标:
App1.csproj
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
...
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="..\myCustom.targets" />
...
</Project>
和
myCustom.targets
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<DestServer>\myserver\final-dest</DestServer>
</PropertyGroup>
</Project>
答案 1 :(得分:1)
我不知道通过VisualStudio GUI设置此方法(可能没有),但您应该能够编辑.csproj / .vcproj文件以将该属性添加到适当的配置:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>9.0.30729</ProductVersion>
...
...etc
...
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DestServer>\myserver\final-dest</DestServer> <!-- <<<<< HERE <<<<< -->
...
即使您通过GUI编辑其他属性,Visual Studio也会保留此功能(至少倾向于 ...)