MSBuild:OutputPath目录为空

Rre*_*Cat 2 deployment msbuild

我想部署我的ASP.NET MVC站点并具有以下脚本.

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="..\MyProjName\MyProjName.csproj"/>
  <PropertyGroup>
    <NewInstallDir>C:\DeployFolder\</NewInstallDir>
    <BinDir>$(NewInstallDir)bin\</BinDir>
  </PropertyGroup>
  <Target Name="Build">
    <MSBuild Projects="..\MySlnName.sln"
        Properties="Configuration=Release;Platform=Any CPU;OutputPath=$(BinDir)" />
    <Copy SourceFiles="@(Content->'..\MyProjName\%(RelativeDir)%(FileName)%(Extension)')"
        DestinationFiles="@(Content->'$(NewInstallDir)%(RelativeDir)%(FileName)%(Extension)')" />
    <Copy SourceFiles="@(None->'..\MyProjName\%(RelativeDir)%(FileName)%(Extension)')"
        DestinationFiles="@(None->'$(NewInstallDir)%(RelativeDir)%(FileName)%(Extension)')" />
    <MakeDir Directories="@(Folder->'$(NewInstallDir)%(RelativeDir)')" />
  </Target>
</Project>
Run Code Online (Sandbox Code Playgroud)

大意.

我将二进制文件复制到C:\ DeployFolder(从源代码中获取文件夹的结构).我将我的dll构建到C:\ DeployFolder\Bin(我在sources文件夹中没有这个文件夹所以我需要单独复制它).

我运行我的脚本 - 所有工作而不是复制DLL到OutputPath.相同的脚本适用于其他asp.net mvc项目.我不知道在这种情况下有什么问题.

我用解决方法完成了这个问题,但我想知道这个脚本有什么问题.

Bri*_*ler 5

我要尝试的第一件事是用$(OutDir)替换已弃用的$(OutputPath).从我看到这个错误时起,9次中有9次是由于所请求的平台/配置与实际定义的特定项目之间的不匹配.注意跟踪解决方案文件首选的"任何CPU"(带空格)与$(平台)项目文件中实际使用的"AnyCPU"之间的差异.某些项目向导仅设置"x86"平台或以其他方式省略"AnyCPU",这可能导致OutputPath为空.

除此之外,导入项目文件然后构建解决方案的方法(可能包括同一个项目"有点偏离中心.考虑通过导入在项目文件本身中进行部署更改.您可以选择在正确的位置连接到现有的构建目标,或者可能添加额外的目标.