在TFS 2017中发布二进制文件:发布含CS及解决方案文件问题求助
在TFS 2017中发布仅包含二进制文件的解决方案
我完全懂你遇到的这个困扰——每次发布都把源码文件带进去确实很头疼,我来给你几个实用的解决办法,亲测有效:
1. 优化MSBuild参数,直接排除不必要的文件
你现有的MSBuild参数已经有了基础的发布设置,只需要加上排除规则就能过滤掉CS和解决方案文件。把参数改成这样:
/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\CC" /p:ExcludeFilesFromDeployment="*.cs;*.sln;**/*.cs;**/*.sln" /p:ExcludeFoldersFromDeployment="**/obj;**/Properties"
ExcludeFilesFromDeployment:直接指定要排除的文件类型,覆盖根目录和所有子目录下的CS、SLN文件ExcludeFoldersFromDeployment:排除编译生成的obj文件夹和项目属性文件夹,这些都属于发布无关内容
2. 调整构建定义的文件复制逻辑
如果你的构建流程里有“复制文件”步骤,一定要确保只复制编译后的二进制产物:
- 设置源文件夹为项目的编译输出目录,比如:
$(build.sourcesdirectory)\YourWebProject\bin\$(BuildConfiguration) - 设置目标文件夹为你指定的Artifact目录:
$(build.artifactstagingdirectory)\CC
这样就能精准只拿编译好的dll、exe和必要的Web资源,不会把源码带进去。
3. 检查项目文件(.csproj)的配置
有时候项目文件里的默认设置会导致源码被误包含,你可以手动修改.csproj文件来强制排除:
打开你的Web项目.csproj,添加以下配置段:
<ItemGroup> <!-- 移除所有CS和SLN文件的Content标记,避免被当作发布内容处理 --> <Content Remove="*.cs" /> <Content Remove="*.sln" /> <Content Remove="**/*.cs" /> <Content Remove="**/*.sln" /> </ItemGroup>
这样就能从根源上阻止这些文件被打包进发布包。
4. 使用发布配置文件(Publish Profile)
如果习惯用可视化配置,可以在Visual Studio里创建一个自定义发布配置文件,在配置界面里设置排除规则,然后在TFS构建的MSBuild参数里加上:
/p:PublishProfile=YourCustomProfileName
这样发布配置里的排除规则会自动生效,不用每次手动写一堆参数。
按照上面的方法调整后,再执行发布操作,应该就能得到只包含二进制文件和必要Web资源的干净发布包了。
内容的提问来源于stack exchange,提问作者Sheikh Junaid
相关产品推荐
相关产品推荐

