1.问题:

    项目引用MySQL Connector注册在.net Framework中dll进行数据连接(MySQL.Data.DLL)。因此在生成及发布时未将DLL拷贝

至发布文件夹,导致每次发布需要手动复制DLL至发布文件夹bin目录。

2.解决方案

    - a. 卸载网站项目.csproj, 右键单击编辑csproj

    - b. 在.csproj末尾

  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />

      节点后添加PropertyGroup节点

  <PropertyGroup>
    <CopyAllFilesToSingleFolderForPackageDependsOn>
      CustomCollectFiles;
      $(CopyAllFilesToSingleFolderForPackageDependsOn);
    </CopyAllFilesToSingleFolderForPackageDependsOn>
  </PropertyGroup>

    以及Target节点

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

    - c. 重新加载项目并在项目文件夹上一级建立"Extra Files"文件夹,将所需拷贝至bin目录dll放入其中

图1. Extra Files文件路径示意

图2. Extra Files中包含所需发布dll

    - d. 点击发布之后,即将MySql.Data.dll拷贝至发布文件夹bin目录

 图3. 发布后效果

 3. 参考文献

"http://sedodream.com/2010/05/01/WebDeploymentToolMSDeployBuildPackageIncludingExtraFilesOrExcludingSpecificFiles.aspx"

02-09 20:57