2012-09-12 269 views
4

使用_bin_deployableAssemblies与Visual Studio 2010我用_bin_deployableAssemblies文件夹中包含哪些应该包括在构建和Web部署bin文件夹中的第三方组件。 这是关于那些网站需要的第三方程序集,但你不想引用它们。 这个工作真棒......与Visual Studio 2012

现在与Visual Studio 2012就停止了工作......好吧,它的一部分停止工作。 当我建立的_bin_deployableAssemblies文件夹的内容复制到bin文件夹。 但是,当我执行webdeploy,比如我的本地磁盘,这些文件不会发布到输出文件夹的bin文件夹。

我在我的.csproj文件中使用这样的:

<PropertyGroup> 
    <OnAfterCopyAllFilesToSingleFolderForPackage> 
    __MoveFilesFromUmbracoSubdirsToBinPackageTemp 
    </OnAfterCopyAllFilesToSingleFolderForPackage> 
</PropertyGroup> 
<Target Name="_CopyBinDeployableAssemblies" Condition="Exists('$(MSBuildProjectDirectory)\_bin_deployableAssemblies')"> 
    <CreateItem Include="$(MSBuildProjectDirectory)\_bin_deployableAssemblies\**\*.*" Condition="Exists('$(MSBuildProjectDirectory)\_bin_deployableAssemblies')" Exclude="$(MSBuildProjectDirectory)\_bin_deployableAssemblies\**\.svn\**\*"> 
    <Output ItemName="_binDeployableAssemblies" TaskParameter="Include" /> 
    </CreateItem> 
    <Copy SourceFiles="@(_binDeployableAssemblies)" DestinationFolder="$(OutDir)" SkipUnchangedFiles="true" Retries="$(CopyRetryCount)" RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" /> 
</Target> 
<Target Name="__MoveFilesFromUmbracoSubdirsToBinPackageTemp"> 
    <Message Text="Moving files from bin\umbraco\ and bin\umbraco plugins\ to bin\" Importance="high" /> 
    <CreateItem Include="$(_PackageTempDir)\bin\umbraco\*.*;$(_PackageTempDir)\bin\umbraco plugins\*.*"> 
    <Output ItemName="_umbracoItems" TaskParameter="Include" /> 
    </CreateItem> 
    <Move SourceFiles="@(_umbracoItems)" DestinationFolder="$(_PackageTempDir)\bin" /> 
    <Message Text="Removing bin\umbraco\ and bin\umbraco plugins\ folders" Importance="high" /> 
    <RemoveDir Directories="$(_PackageTempDir)\bin\umbraco;$(_PackageTempDir)\bin\umbraco plugins" /> 
</Target> 

谁能帮我我如何才能在输出中文件夹的bin文件夹中的组件?

回答

3

感谢阿列克谢我找到了解决我的问题,这是我使用的是什么,现在在我的.csproj文件,以支持复制为所在文件系统和Webdeploy第三方组件:

<ItemGroup> 
    <AvailableItemName Include="ThirdPartyAssemblies"> 
     <Visible>false</Visible> 
    </AvailableItemName> 
</ItemGroup> 
<Target Name="AfterBuild"> 
    <Message Text="Build | Copying third party assemblies to output folder ($(OutputPath))" Importance="high" /> 
    <Copy DestinationFolder="$(OutputPath)" SourceFiles="@(ThirdPartyAssemblies)" SkipUnchangedFiles="true" /> 
</Target> 
<Target Name="CopyBinFiles" AfterTargets="CopyAllFilesToSingleFolderForPackage" BeforeTargets="MSDeployPublish"> 
    <Message Text="Deploy | Copying third party assemblies to output folder ($(_PackageTempDir)\bin\)" Importance="high" /> 
    <Copy DestinationFolder="$(_PackageTempDir)\bin\" SourceFiles="@(ThirdPartyAssemblies)" SkipUnchangedFiles="true" /> 
</Target> 

来源:MSBuild targets and Visual Studio 2012 issues

-2

假设你有只有运行此应用程序在项目属性集所需的文件,确保文件都包含在项目中,他们的生成操作的内容。

http://msdn.microsoft.com/en-us/library/ee942158.aspx#why_dont_all_files_get_deployed

+2

不幸的是这无关我的问题... – kipusoep

+0

它可能如果在项目转换为2012年或某些其他原因复制到bin文件夹中的文件的过程不再是我在项目中被包括在内。我列出的标准是在VS 2012中确定文件是否将被复制到输出bin文件夹中的标准。 – tdykstra

+0

该目标的MSBuild(S)我张贴应该照顾的复制过程中,至少它在VS2010一样。所以我的问题是; VS2012发生了什么变化,我该如何解决它。 – kipusoep