标签: msbuild

在构建服务器而不是开发机器上编译时 DLL 的差异

我有一个将用户控件加载到 .NET Web 应用程序中的应用程序。当我在我的开发机器上本地编译和测试应用程序时,它可以在我的机器上运行。 该项目在我们的构建服务器上使用 MSBuild 成功构建。但是,当我在构建服务器上部署 MSBuild 生成的 dll 时,应用程序加载控件时出现以下错误:

BC30456:“CreateResourceBasedLiteralControl”不是“ASP.usercontrols_somecontrol_ascx”的成员。

我看了一下,比较了我的机器上生成的 dll,并将其(查看文件大小)与构建服务器创建的 dll 进行了比较,发现文件大小存在差异。考虑到本地构建的代码和构建服务器上的代码是相同的,这是令人困惑的。我手动比较每个文件。所以我的问题是: 是什么导致了这个错误?MSBuild 的代码编译与 Visual Studio 编译代码时发生的情况有何不同?

asp.net msbuild user-controls visual-studio-2008

0
推荐指数
1
解决办法
1436
查看次数

msbuild ITaskItem 输出

我正在尝试将MSBuild.ExtensionPack.Web.Iis7AppPool任务与 GetInfo 任务操作一起使用。该任务的输出参数是SiteInfo属性,其类型是ITaskItem。这是财产,而不是收藏。

如何访问 SiteInfo 元数据?我可以用 $ 访问,但我只能得到网站名称。我尝试使用 %(SiteInfo.) 但没有成功。

msbuild msbuild-task itaskitem

0
推荐指数
1
解决办法
2288
查看次数

相同的 wixproj 文件仅适用于 VS 2012 IDE,但不适用于 VS 命令提示符

我正在尝试此页面上的步骤。我已将 wix 二进制文件安装在本地计算机上的文件夹中。

所以我得到了一个由 wix VS 2010 插件创建的 wix 安装程序项目。我可以使用 VS 2010 IDE 来构建它并生成 msi 文件,但我不能在 VS 命令提示符下使用 Msbuild 做同样的事情。当 Msbuild 尝试编译时,出现一个错误,提示找不到candle.exe:

未处理的异常:System.IO.FileLoadException:无法加载文件或程序集“file:///C:\MyFolder\Wix\candle.exe”或其依赖项之一。不支持操作。(来自 HRESULT 的异常:0x80131515)---> System.NotSupportedException:尝试从网络位置加载程序集,这会导致程序集在 .NET Framework 的早期版本中被沙箱化。默认情况下,此版本的 .NET Framework 不启用 CAS 策略,因此这种加载可能很危险。如果此加载不打算对程序集进行沙箱处理,请启用 loadFromRemoteSources 开关。有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkId=155569

我很确定 exe 位于正确的位置,因为 VS IDE 可以找到它。我想知道 Msbuild 缺少什么?

谢谢!

msbuild wix visual-studio-2010 msbuild-4.0 wix3.7

0
推荐指数
1
解决办法
1729
查看次数

在构建过程中将版本注入 DLL

这是我的情况:

  1. 我有 VS2010 解决方案,其中包含 X 项目。

  2. Wix 项目可以从所有编译的工件创建 msi。

  3. 我有构建机器\ Jenkins,首先编译(MSBuild .Net 4)所有解决方案,然后编译wix以将其打包到msi。

我如何将产品编号(例如 11.2.0.4789)注入到所有工件\dll中 - 尽可能简单?

编译解决方案时是否可以传递命令行参数?

versioning msbuild wix visual-studio-2010 jenkins

0
推荐指数
1
解决办法
2355
查看次数

T4 编译转换:无法访问 T4 文件中的 $(TargetPath)

我想在每次构建时构建我的 .tt 文件。我找到了这个解决方案(让 Visual Studio 在每个构建上运行一个 T4 模板,由Cheburek回答)并按照以下步骤运行它

  1. 安装 Visual Studio SDK
  2. 安装 Visual Studio 2010 建模和可视化 SDK
  3. 增加进口的Microsoft.TextTemplating.targets<TransformOnBuild>true</TransformOnBuild>我的.csproj

我现在的问题是:

我在 T4 文件中使用以下程序集导入:

<#@ assembly name="$(TargetPath)" #>
<#@ import namespace="My.Example.Namespace.Path" #>
Run Code Online (Sandbox Code Playgroud)

我需要这个,因为我需要访问在同一个项目中定义的类。但是现在(我认为因为 tt-transformation 是在构建时完成的第一件事)我不能使用这个命名空间导入,因为在构建时出现以下错误:

Error   Compiling transformation: Metadata file '$(TargetPath)' could not be found.
Run Code Online (Sandbox Code Playgroud)

T4 文件在“正常”使用之前工作正常(保存 T4 文件时生成文件)

是否有可能以某种方式执行 T4 转换(作为最后一个构建步骤),以便我可以$(TargetPath)毫无问题地访问我的 T4 文件?

.net c# msbuild t4 build

0
推荐指数
1
解决办法
1073
查看次数

TeamCity + 行尾,C# 多行逐字字符串

我有以下格式的多行字符串:

@"Text on Line 1
Text on Line 2."
Run Code Online (Sandbox Code Playgroud)

当我在 Visual Studio 中构建测试并使用 VS Developer cmd 运行时,它运行良好并比较预期字符串与实际字符串。

但是当使用 MSBuild 或 VS sln 在 teamcity 上运行时,它只喜欢我的多行字符串,当它们采用以下格式时,带有“\r\n”且没有 @ 符号。并将上述格式视为没有换行符。

"Text on Line 1\r\nText on Line 2."
Run Code Online (Sandbox Code Playgroud)

我用测试反编译了 dll 文件,teamcity 正在生成,而不是“\r\n”,逐字多行字符串中的所有新行字符都被替换为“\n”,因此可能是新行结尾的 teamcity 问题。

我可以继续更改我所有的字符串格式,但正在寻找避免它的解决方案。谢谢!

c# msbuild teamcity line-endings multiline

0
推荐指数
1
解决办法
621
查看次数

构建后事件 msbuild。在成功构建结束时重命名文件

我不知道 MSbuild 脚本,现在没有时间学习它。我需要在成功构建结束时使用一种方法来重命名 dacpac 文件以包含当前正在构建的版本。

示例:(TfsDropLocation)\filename.dapac 到 (TfsDropLocation\filename.1.0.0.0.dacpac)

有没有办法做到这一点?

msbuild rename file version visual-studio

0
推荐指数
1
解决办法
2994
查看次数

NuGet 包尝试使用奇怪的路径,因此无法找到构建输出:NU5012

所以,我有一个针对 .NET Standard、.NET Core 和 .NET Framework 的 .csproj 文件:https : //github.com/dhilgarth/ReadGitVersionInformation/blob/master/src/ReadGitVersionInformation.csproj

我想从该项目文件创建一个 NuGet 包,因此在包含项目文件的文件夹中运行以下命令(该文件夹名为src):

NuGet.exe pack ReadGitVersionInformation.csproj
Run Code Online (Sandbox Code Playgroud)

这个命令行的结果是这样的:

试图从“ReadGitVersionInformation.csproj”构建包。
MSBuild 自动检测:使用来自“C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\bin”的 msbuild 版本“15.7.179.6572”。
错误 NU5012:无法找到“bin\Debug\src\bin\Debug\”。确保项目已构建。

它正在寻找无意义的包bin\Debug\src\bin\Debug

我在这里缺少什么?

c# msbuild nuget

0
推荐指数
1
解决办法
802
查看次数

无法加载程序集 Microsoft.Build.Utilities.Core Version=15.1.0.0

我在运行 gulp 任务以转换我的配置文件时遇到问题。它报告以下错误:

error MSB4062: The "TransformXml" task could not be loaded from the assembly C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Microsoft\VisualStudio\v16.0\Web\Microsof t.Web.Publishing.Tasks.dll. Could not load file or assembly 'Microsoft.Build.Utilities.Core, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified. Confi rm that the <UsingTask> declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask.
Run Code Online (Sandbox Code Playgroud)

任务的作用:

  1. 它创建一个_msbuild.proj包含要转换的配置文件的文件。文件看起来是这样的(显然 Source、Transform 和 Destination 都是用真实数据填充的):
<Project …
Run Code Online (Sandbox Code Playgroud)

.net msbuild visual-studio

0
推荐指数
1
解决办法
2778
查看次数

项目的目标是运行时“win7-x64”,但没有为“Microsoft.NETCore.App”包解析任何特定于运行时的包

我正在尝试将无状态微服务应用程序部署到服务结构中,但我一开始部署就收到此错误。

项目面向运行时“win7-x64”,但没有为“Microsoft.NETCore.App”包解析任何特定于运行时的包。.NET Core 可能不支持此运行时。

如何解决这个问题?

msbuild azure-service-fabric asp.net-core service-fabric-stateless visual-studio-2019

0
推荐指数
1
解决办法
841
查看次数