我正在使用Visual Studio 2012的网站打包功能,并且有一个自定义目标,可以在压缩文件夹之前将一些子文件夹收集到打包目标中。
过去在vs10中可以很好地工作,但是使用新的打包程序vs12时,它不再关心这些配置中的任何一个,并且它们没有正确迁移。
有什么办法做类似的事情,以便我的包裹最终会包含这些文件?

这是vs10中的样子:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <!-- Begin copy Contracts &Provider directories -->
    <CopyAllFilesToSingleFolderForPackageDependsOn>
      CustomCollectFiles;
      $(CopyAllFilesToSingleFolderForPackageDependsOn);
    </CopyAllFilesToSingleFolderForPackageDependsOn>
    <DesktopBuildPackageLocation>..\Package\Release\projectname.zip</DesktopBuildPackageLocation>
    <DeployIisAppPath>projectname</DeployIisAppPath>
    <!-- End copy Contracts &Provider directories -->
  </PropertyGroup>

  <Target Name="CustomCollectFiles">
    <ItemGroup>
      <_CustomFiles Include="$(OutputPath)\Contracts\**\*" />
      <FilesForPackagingFromProject Include="%(_CustomFiles.Identity)">
        <DestinationRelativePath>bin\Contracts\%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
      </FilesForPackagingFromProject>
    </ItemGroup>
    <ItemGroup>
      <_CustomFiles Include="$(OutputPath)\Providers\**\*" />
      <FilesForPackagingFromProject Include="%(_CustomFiles.Identity)">
        <DestinationRelativePath>bin\Providers\%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
      </FilesForPackagingFromProject>
    </ItemGroup>

在新项目中,这完全被忽略。做类似事情的好方法是什么?

最佳答案

找到了一个解决方案,只需将CopyAllFilesToSingleFolderForPackageDependsOn重命名为CopyAllFilesToSingleFolderForMsdeployDependsOn,文件应包含在部署包中。

顺便说一句,这仍然不是最佳解决方案,因为您需要同时维护两者以支持vs12和vs 10

关于asp.net-mvc-3 - vs12不再支持CopyAllFilesToSingleFolderForPackageDependsOn,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12235449/

10-12 03:55