我有一个解决方案,其中包含一些C#DLL项目和一个MVC Web项目。当我同时使用Visual Studio 2013和msbuild进行发布时,我发现DLL是不同的(根据Winmerge)。
我使用Visual Studio 2013发布项目。它使用的是带有发行版配置和ANY CPU的配置文件“发行版”。它正在执行文件系统发布。我两次发布到两个单独的目录。我使用Winmerge比较输出,发现没有差异。我发布了两次以验证DLL是否相同。
然后,我使用msbuild发布相同的项目。我使用相同的配置文件,相同的配置和相同的平台。我将msbuild生成的DLL与Visual Studio使用Winmerge创建的DLL进行了比较。它们具有相同的文件版本,但是文件的开头和结尾附近有几个字节的差异。
这是预期的吗?使用Visual Studio与手动使用msbuild进行发布时,是否存在页眉/页脚信息可能会有所不同?
我的msbuild命令如下:
C:\Program Files (x86)\MSBuild\12.0\Bin\MSBuild.exe "c:\path\to\my.csproj" ^
/t:Rebuild ^
/p:Platform=AnyCPU ^
/p:DeleteExistingFiles=true ^
/p:PublishDestination="d:\output_path" ^
/p:DeployOnBuild=true ^
/p:PublishProfile=Release ^
/p:WebPublishMethod=FileSystem ^
/p:ExcludeApp_Data=false ^
/p:publishUrl="d:\output_path" ^
/p:VisualStudioVersion=12.0
我怀疑同时具有PublishDestination和publishUrl是多余的,并且也许不需要指定Platform,因为我也使用PublishProfile。我很难找到对我有帮助的文档。