请考虑以下情形:
请注意,默认情况下," *.pubxml.user"文件不包含在源代码管理中:http://msdn.microsoft.com/en-us/library/ff398069.aspx
原因是有关构建配置的信息存储在文件" *.pubxml.user"中(请参阅调用的节点<LastUsedBuildConfiguration>).
当您使用Web配置转换("Web.Release.config")更改连接字符串时,此行为是有问题的.
=> 如果我不想将" *.pubxml.user"文件保存到源代码控制中,如何解决此问题(例如,因为此文件可能包含不适合公共存储库的其他信息)?
相关文章:
asp.net deployment version-control visual-studio-2012 publish-profiles
我有一个Web项目,我从命令行发布,使用发布配置文件执行一些额外的任务(排除一些文件和文件夹,grunt,依次发布另一个项目).
一台两台机器(A和B),通过右键单击>在Visual Studio中发布...并选择正确的发布配置文件,它可以正常工作.
从历史上看,在两台机器上,它还使用以下命令行:
msbuild MyProject.csproj /p:Configuration=Release /p:DeployOnBuild=true /p:PublishProfile=myProfile /v:n
Run Code Online (Sandbox Code Playgroud)
但是现在,机器B没有正确发布.
发布配置文件<WebPublishMethod>FileSystem</WebPublishMethod在顶部配置,但是从日志中,它正在尝试Package发布类型,而没有明显的原因.
这是完整的发布配置文件:
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<WebPublishMethod>FileSystem</WebPublishMethod>
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<SiteUrlToLaunchAfterPublish />
<LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
<ExcludeApp_Data>False</ExcludeApp_Data>
<publishUrl>..\Production</publishUrl>
<DeleteExistingFiles>False</DeleteExistingFiles>
<ExcludeFoldersFromDeployment>Content;Scripts;Pages</ExcludeFoldersFromDeployment>
<ExcludeFilesFromDeployment>index-dev.html;index.html;debug.html;JSLintNet.json;Gruntfile.js;package.json;packages.config;publishall.bat;publishapi.bat</ExcludeFilesFromDeployment>
<BuildDependsOn>
$(BuildDependsOn);
RunGrunt;
PublishApi;
</BuildDependsOn>
</PropertyGroup>
<Target Name="RunGrunt">
<Message Text="Running grunt production..." />
<Exec Command="grunt production" />
</Target>
<Target Name="PublishApi">
<Message Text="Publishing API..." />
<Exec Command="publishapi" />
</Target>
</Project>
Run Code Online (Sandbox Code Playgroud)
正如您所期望的那样,因为它只是在执行a Package,所以目录中不会出现任何文件publishUrl.再次,使用右键单击发布,发布配置文件在VS2013中运行良好.
在登录机器AI获取此摘录:
**ValidatePublishProfileSettings**:
Validating PublishProfile(myProfile) settings.
Run Code Online (Sandbox Code Playgroud)
但是在机器B中它没有出现.
稍后在登录机器A上它包含:
**WebFileSystemPublish**:
Creating directory "..\Production".
Copying obj\Release\Package\PackageTmp\cache.manifest …Run Code Online (Sandbox Code Playgroud) 是否可以使用visual studio Sql Server数据工具数据库项目为不同的发布配置文件部署不同的种子数据集?
我们知道您可以使用部署后脚本部署种子数据.我们知道您可以使用发布配置文件工具部署到不同的环境.我们不知道的是如何将不同的种子数据部署到不同的环境中.
我们为什么要这样做?
database-project visual-studio seeding publish-profiles sql-server-data-tools
我正在使用Visual Studio Online在CI构建过程后不断部署我的项目.但是,我必须使用发布配置文件来构建生产web.config转换,以便部署的网站将使用生产数据库而不是dev DB.我跟随Scott Hanselman的博客文章在CI构建定义中添加MSBuild参数.我的论点是这样的:
/p:DeployOnBuild=true /p:PublishProfile=[publish profile name] /p:AllowUntrustedCertificate=true /p:UserName=[credentials obtained from Azure Website portal] /p:Password=[from the portal as well]
Run Code Online (Sandbox Code Playgroud)
看起来很有效,部署的网站现在正在使用生产数据库.
然后我注意到在Deployment部分下的CI构建定义中,有一个参数叫做:部署设置的路径.从这篇文章中,它说:
"网站的.pubxml文件的路径,相对于repo的根文件夹.忽略云服务."
这正是我想要的.所以我删除了MSBuild参数,通过在弹出窗口中选择pubxml文件来设置"部署设置路径",然后再试一次.
但是,这种简单易用的方法根本不起作用.即使它指向相同的pubxml文件,并且两种方式都获得了绿色CI构建,后者似乎仍然使用默认的web.config而不是部署后的转换后的.
所以我很好奇是否有人知道MSBuild参数中的PublishProfile与部署设置路径之间有什么区别?我用正确的方法做到了这一点吗?
msbuild continuous-deployment azure-web-sites publish-profiles azure-devops
我正在使用以下发布配置文件从 Visual Studio 中发布控制台应用程序:
<?xml version="1.0" encoding="utf-8"?>
<!--
https://go.microsoft.com/fwlink/?LinkID=208121.
-->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PublishProtocol>FileSystem</PublishProtocol>
<Configuration>Release</Configuration>
<Platform>x64</Platform>
<TargetFramework>netcoreapp5.0</TargetFramework>
<PublishDir>bin\Release\netcoreapp5.0\publish\</PublishDir>
<RuntimeIdentifier>win10-x64</RuntimeIdentifier>
<SelfContained>False</SelfContained>
<PublishSingleFile>True</PublishSingleFile>
<PublishReadyToRun>True</PublishReadyToRun>
<IncludeNativeLibrariesForSelfExtract>True</IncludeNativeLibrariesForSelfExtract>
<DebugType>none</DebugType>
<DebugSymbols>false</DebugSymbols>
</PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
我的目标是不在发布输出文件夹中发出任何 .pdb 文件(调试符号)。
这并不完全按预期工作。
控制台应用程序项目的 .pdb 文件未按预期生成,但由于某种原因生成了它引用的业务逻辑项目的调试符号。这是一个错误吗?
我可以通过向业务逻辑库的项目文件添加条件语句来解决这个问题,但这是我想避免的,因为我认为发布应用程序的所有相关信息都应该驻留在发布配置文件中。
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<DebugType>none</DebugType>
<DebugSymbols>false</DebugSymbols>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud) 我正在使用新的 ASP.Net 和 Web 工具 2012.2发布网站配置文件(不是 Web 应用程序)。
我使用在网站根目录中创建文件的工具创建了一个发布配置文件website.publishproj。
该website.publishproj文件包含以下内容:
<AssemblyAttributes Include="AssemblyFileVersion">
<Value>$(AssemblyFileVersion)</Value>
</AssemblyAttributes>
<AssemblyAttributes Include="AssemblyVersion">
<Value>$(AssemblyVersion)</Value>
</AssemblyAttributes>
Run Code Online (Sandbox Code Playgroud)
这表明您可以将属性传递给 MSBuild 以设置输出 dll 的版本。
但是,网站的单个输出程序集(编译后合并为单个程序集)始终具有版本号1.0.0.0.
我试过传入,/p:AssemblyFileVersion=2.1.0.0;AssemblyVersion=2.1.0.0但这没有效果。
我什至尝试过直接编辑 website.publishproj 文件,但这也没有效果。
有谁知道当您希望将其合并到单个程序集时如何在网站项目上设置输出程序集的版本号?
我通过visual studio通过PublishProfile发布我的MVC项目(通过UI,右键单击项目,发布)并勾选清除目标文件夹的选项.但我不希望清除特定文件夹"下载"
我花了无数个小时试图完成这项工作,我想我的代码与此处解释的完全相同,但它仍然会删除"下载"文件夹
另外作为下面的示例,我有"favicon"的ExcludeFromPackageFiles,如果我取消选择目标文件夹的删除(只是为了表明我的wpp目标实际上正在运行).
下面是我的projectname.wpp.targets文件
<?xml version="1.0" encoding="utf-8" ?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- this doesnt work -->
<PropertyGroup>
<AfterAddIisSettingAndFileContentsToSourceManifest>AddCustomSkipRules</AfterAddIisSettingAndFileContentsToSourceManifest>
</PropertyGroup>
<PropertyGroup>
<UseMsDeployExe>true</UseMsDeployExe>
</PropertyGroup>
<Target Name="AddCustomSkipRules">
<Message Text="Adding Custom Skip Rules" />
<ItemGroup>
<MsDeploySkipRules Include="SkipErrorLogFolder1">
<SkipAction>Delete</SkipAction>
<ObjectName>filePath</ObjectName>
<AbsolutePath>ErrorLog</AbsolutePath>
</MsDeploySkipRules>
</ItemGroup>
</Target>
<!-- this works! -->
<ItemGroup>
<ExcludeFromPackageFiles Include="favicon.ico">
<FromTarget>ContactManager.Mvc.wpp.targets</FromTarget>
</ExcludeFromPackageFiles>
</ItemGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我想在Jenkins中创建一个发布任务,以自动发布我的数据库更改以及我的应用程序.
如果我理解正确,通常的做法是创建一个发布配置文件,其中包括数据库名称以及用于部署的帐户的帐户(登录名和密码).
这意味着部署帐户用户名和密码将以明文形式存储在每台开发人员计算机以及版本控制服务器和持续集成服务器上.
即使我为部署创建了特定的登录名和密码,但对我来说似乎相当不安全.
有解决方法吗?我只能考虑在持续集成服务器上的msbuild命令行中替换密码.
database security passwords publish-profiles sql-server-data-tools
我正在使用 CI 并尝试构建asp.net core应用程序并使用预配置的发布配置文件将其发布到 azure。我可以使用命令行运行以下命令,但是当我使用 Jenkins (Windows) 运行它时,它会失败:
dotnet build -c Release /p:DeployOnBuild=true /p:PublishProfile=mycoolprofile
我得到以下错误输出:
Microsoft (R) Build Engine version
15.6.84.34536 for .NET Core Copyright (C) Microsoft Corporation. All rights reserved.
MSBUILD : error MSB1008: Only one project can be specified. Switch: p:PublishProfile=mycoolprofile
Run Code Online (Sandbox Code Playgroud)
当然,我看到了所有quotes讨论,我将我的个人资料重命名为一个简单的单词,这就是上面真实的个人资料名称。
我正在遵循本指南: https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/visual-studio-publish-profiles
msbuild ×5
asp.net ×3
.net ×1
.net-core ×1
asp.net-core ×1
azure-devops ×1
database ×1
deployment ×1
jenkins ×1
passwords ×1
security ×1
seeding ×1