Microsoft Build Engine,也称为MSBuild,是托管代码的构建平台,是.NET Framework的一部分。
以下是为我的开发环境生成的发布配置文件:
如果输出目录文件比源文件新,如何阻止 .csproj 文件的任何构建操作?
如果输出目录 DLL(例如 bin\Release 相对目录中)比所有源文件新,则尝试让 MSBuild 不执行任何操作。 是否有一个属性可用于停止构建/复制歌剧...
Web.config 转换 + Azure CI/CD 不起作用
我正在尝试使 Web.Config 转换发挥作用。 我有基本的 Web.config: ...(无关代码) 我正在尝试使 Web.Config 转换发挥作用。 我有基础 Web.config: ... (irrelevant code) <configuration> <connectionStrings> <add name="sampleConnStringName" connectionString="sampleConnString" providerName="System.Data.EntityClient" /> </connectionStrings> ... (irrelevant code) 然后我有Web.Debug.config: <?xml version="1.0"?> <configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> <connectionStrings> <add name="sampleConnStringName" connectionString="debugConnString" providerName="System.Data.EntityClient" xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/> </connectionStrings> </configuration> 和Web.Release.config: <?xml version="1.0"?> <configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> <connectionStrings> <add name="sampleConnStringName" connectionString="releaseConnString" providerName="System.Data.EntityClient" xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/> </connectionStrings> </configuration> 当然,当我在本地构建应用程序时,转换不起作用,但不幸的是,在使用 Azure YAML 管道时它也不起作用。 相关 YAML 部分: variables: BuildPlatform: 'any cpu' BuildConfiguration: 'Release' ... (irrelevant code) task: VSBuild@1 displayName: Build MyUi inputs: solution: "$(solution)" msbuildArgs: '/p:TransformConfigFile=true /p:DeployDefaultTarget=WebPublish /p:DeployOnBuild=true /p:WebPublishMethod=FileSystem /p:publishUrl="$(build.artifactStagingDirectory)\MyUi" /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactStagingDirectory)\MyUi"' platform: "$(buildPlatform)" configuration: "$(buildConfiguration)" - task: PublishBuildArtifacts@1 displayName: Publishing MyUi to artifacts inputs: PathtoPublish: '$(Build.ArtifactStagingDirectory)\MyUi' ArtifactName: 'drop' publishLocation: 'Container' 即使在这一步(此管道中还有其他步骤,例如使用具有多个 CopyFiles@2 任务的 VM Azure 代理),在 artficats 中我可以看到 web.config 是..完全不同 - 它甚至不是原始的 Web.config ,它包含来自此解决方案中其他项目的 app.config 文件混合的连接字符串 - 无论我是否添加 web.debug.config 和 web.release.config,并更改主 web.config,web.config 都会发布到文物保持不变。 起初我以为 web.config 可能不会被复制,但在属性中它被标记为“始终复制”,所以情况并非如此。 也许有人以前遇到过这个问题,可以分享解决方案,或者更好的方法来解决这个问题? 编辑:Azure Pipeline 日志: PreTransformWebConfig: Found The following for Config tranformation: Web.config, bin\Web.config Creating directory "D:\a\1\s\2. UIlayer\MyUi\obj\Release\TransformWebConfig\transformed\". Creating directory "D:\a\1\s\2. UIlayer\MyUi\obj\Release\TransformWebConfig\transformed\bin\". Copying Web.config to obj\Release\TransformWebConfig\original\Web.config. Copying D:\a\1\s\2. UIlayer\MyUi\Web.config to obj\Release\TransformWebConfig\original\bin\Web.config. Copying D:\a\1\s\2. UIlayer\MyUi\Web.Release.config to obj\Release\TransformWebConfig\assist\Web.config. Copying D:\a\1\s\2. UIlayer\MyUi\bin\Web.Release.config to obj\Release\TransformWebConfig\assist\bin\Web.config. TransformWebConfigCore: Transforming Source File: D:\a\1\s\2. UIlayer\MyUi\Web.config Applying Transform File: D:\a\1\s\2. UIlayer\MyUi\Web.Release.config Output File: obj\Release\TransformWebConfig\transformed\Web.config Transformation succeeded TransformWebConfigCore: Transforming Source File: D:\a\1\s\2. UIlayer\MyUi\Web.config Applying Transform File: D:\a\1\s\2. UIlayer\MyUi\bin\Web.Release.config Output File: obj\Release\TransformWebConfig\transformed\bin\Web.config Transformation succeeded PostTransformWebConfig: Transformed Web.config using D:\a\1\s\2. UIlayer\MyUi\Web.Release.config into obj\Release\TransformWebConfig\transformed\Web.config. Transformed D:\a\1\s\2. UIlayer\MyUi\Web.config using D:\a\1\s\2. UIlayer\MyUi\bin\Web.Release.config into obj\Release\TransformWebConfig\transformed\bin\Web.config. ... Copying obj\Release\TransformWebConfig\transformed\Web.config to obj\Release\Package\PackageTmp\Web.config. Copying obj\Release\TransformWebConfig\transformed\bin\Web.config to obj\Release\Package\PackageTmp\bin\Web.config. ... WebFileSystemPublish: Creating directory "D:\a\1\a\MyUi". Copying obj\Release\Package\PackageTmp\Web.config to D:\a\1\a\MyUi\Web.config. AutoParameterizationWebConfigConnectionStringsCore: Transforming Source File: D:\a\1\s\2. UIlayer\MyUi\obj\Release\Package\PackageTmp\bin\Web.config Applying Transform File: <?xml version="1.0"?> <configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> <connectionStrings> <add connectionString="{% token='$(ReplacableToken_#(parameter)_#(tokennumber))' xpathlocator='name' parameter='$(name)-Web.config Connection String' description='$(name) Connection String used in web.config by the application to access the database.' defaultValue='$(connectionString)' tags='SqlConnectionString' %}" xdt:Transform="SetTokenizedAttributes(connectionString)" xdt:SupressWarnings="True" /> </connectionStrings> </configuration> Output File: obj\Release\CSAutoParameterize\transformed\bin\Web.config Transformation succeeded PostAutoParameterizationWebConfigConnectionStrings: Auto ConnectionString Transformed obj\Release\Package\PackageTmp\Web.config into obj\Release\CSAutoParameterize\transformed\Web.config. Auto ConnectionString Transformed obj\Release\Package\PackageTmp\bin\Web.config into obj\Release\CSAutoParameterize\transformed\bin\Web.config. ... AutoParameterizationWebConfigConnectionStringsCore: Transforming Source File: D:\a\1\s\2. UIlayer\MyUi\obj\Release\Package\PackageTmp\Web.config Applying Transform File: <?xml version="1.0"?> <configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> <connectionStrings> <add connectionString="{% token='$(ReplacableToken_#(parameter)_#(tokennumber))' xpathlocator='name' parameter='$(name)-Web.config Connection String' description='$(name) Connection String used in web.config by the application to access the database.' defaultValue='$(connectionString)' tags='SqlConnectionString' %}" xdt:Transform="SetTokenizedAttributes(connectionString)" xdt:SupressWarnings="True" /> </connectionStrings> </configuration> Output File: obj\Release\CSAutoParameterize\transformed\Web.config Transformation succeeded Transforming Source File: D:\a\1\s\2. UIlayer\MyUi\obj\Release\Package\PackageTmp\bin\Web.config Applying Transform File: <?xml version="1.0"?> <configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> <connectionStrings> <add connectionString="{% token='$(ReplacableToken_#(parameter)_#(tokennumber))' xpathlocator='name' parameter='$(name)-Web.config Connection String' description='$(name) Connection String used in web.config by the application to access the database.' defaultValue='$(connectionString)' tags='SqlConnectionString' %}" xdt:Transform="SetTokenizedAttributes(connectionString)" xdt:SupressWarnings="True" /> </connectionStrings> </configuration> Output File: obj\Release\CSAutoParameterize\transformed\bin\Web.config Transformation succeeded 根据 VSBuild 任务日志,配置转换后,它在构建过程中对 web.config 文件中的连接字符串进行了另一个自动参数化。请在 msbuildArgs 中添加 /p:AutoParameterizationWebConfigConnectionStrings=False 以跳过它。 我创建了一个旧的.net框架MVC应用程序,并且web.config按预期由Web.release.config转换: 我的任务如下: - task: VSBuild@1 displayName: Build solution inputs: solution: $(BuildParameters.solution) msbuildArgs: /p:DeployOnBuild=true /p:AutoParameterizationWebConfigConnectionStrings=False /p:WebPublishMethod=FileSystem /p:publishUrl="$(build.artifactStagingDirectory)\MyUi" /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactStagingDirectory)\MyUi" platform: $(BuildPlatform) configuration: $(BuildConfiguration)
什么原因会导致 MSIExec 错误 1619 '此安装包无法打开'
我正在尝试从一组示例程序中自动执行往返安装和卸载一组 MSI 文件(由 WiX 生成)。由于某种原因,.MSI 文件非常适合安装...
在 VS2019 解决方案/MSBuild 中覆盖 tsconfig.json?
我有一个 Visual Studio 解决方案(不是 VS Code),其中包含多个 tsconfig.json 文件,我希望这些文件在生产中表现不同。 我想要两个文件(也许更多),例如: tsconfig.json
你可以从命令行调用Slow Cheetah吗?我希望添加一个构建后事件来转换我的配置文件以适应各种不同的环境。 干杯 迪
使用 dotnet.exe 时,我在 .NET 项目的命令行构建中看到类似这样的消息: [项目名称]:工作负载更新可用。 运行“dotnet 工作负载列表”以获取更多信息。 我...
问题 我们在解决方案中使用配置转换。例如:调试、测试、登台、发布 但是,这些配置仅用于我们的 MVC 项目。所有的图书馆只使用...
需要在命令行中msbuild较低版本的C#项目,无需Visual Studio
我需要在命令行上msbuild较低版本的C#项目,我没有Visual Studios。 我在构建项目时遇到错误: Microsoft(R)构建引擎版本2.0.50727.42 [微...
如何自定义 Visual C 2010 项目的构建以使用不同的编译器和链接器?
我们有一个 Visual Studio 2010 项目,其中包含一堆 C 源文件。 这些文件需要编译,然后使用嵌入式设备的特殊工具链进行链接。 目前,我们
我希望嵌入 razor 类库项目生成的作用域 css 捆绑文件。该文件在构建时放置在 obj 文件夹中。我在定义正确的 msbuild t 时遇到了挑战...
如何配置 Visual Studio Code 以在 PATH 中没有 .NET SDK 的情况下使用 Visual Studio Professional 2019 工具?
我安装了 Visual Studio Professional 2019: C:\Program Files (x86)\Microsoft Visual Studio�9\Professional\Common7\IDE\devenv.com C:\Program Files (x86)\Microsoft Visual Studio�9\Profess...
如何修复`您的项目没有引用“.NETFramework,Version=v4.6.1”框架...`
我收到此错误 您的项目未引用“.NETFramework,Version=v4.6.1”框架。在项目文件的“TargetFrameworks”属性中添加对“.NETFramework,Version=v4.6.1”的引用...
我构建和部署了许多应用程序,我希望在代码中提供版本控制信息。此版本控制信息由 GitHash 和日期
如何调试从 iPhone 模拟器或设备抛出的 DllNotFoundException 以获得本机依赖项?
我正在开发一个可以在 Android、iOS 和桌面操作系统上运行的 .NET 库。它在任何地方都运行良好——除了 iOS。事实上,在 iOS 上,我可以将其用于本地部署,但是 Apple Store
我需要创建由多个项目组成的现有大型应用程序的演示版本。 我想使用现有的项目,并通过预处理器指令中性化功能...
错误信息: 严重性代码 说明 项目文件行抑制状态详细信息 错误(活动)NETSDK1152 发现多个具有相同相对关系的发布输出文件...
我们在 .NET8 中的确定性构建方面存在问题。 我们有一个包含许多参考库的大型项目。 为了简单起见,我们使用 lib1 引用的 lib2。 如果lib2的源代码
我已经在这件事上用头撞墙好几天了。 无论进行多少次谷歌搜索或胡思乱想,似乎都无法给出答案。 我想在构建时运行 T4 模板。 在其中,我需要
将大型 C++ 多项目 Visual Studio 解决方案从 NuGet 迁移到 vcpkg
我有一个 Visual Studio C++ 解决方案 (MsBuild),其中包含一百多个项目。 有些项目依赖于第三方库,例如 fmt、zlib 等(它们作为 DLL + he 存储在共享驱动器上...