首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MSBuild不解析路径内的参数

MSBuild不解析路径内的参数
EN

Stack Overflow用户
提问于 2019-12-14 05:40:35
回答 1查看 272关注 0票数 0

我必须使用ms build运行文本转换文件,所以我使用transform作为目标。为了在我的项目中运行它,我必须传递一些路径来获取资源dll。所以我的命令是

代码语言:javascript
复制
D:\WorkSpace\Projects\Client\Dev\Project\Lw.Domain.Project>msbuild  /tv:15.0 /t:transform /p:TransformFile="ProjectEntityModelGenerator.tt" /p:SolutionDir=".." /p:FrameworkVersion=4 /p:MetaModelFolder="$(SolutionDir)\packages\LW.Framework$(FrameworkVersion)" /p:BaseResourceFolder="$(SolutionDir)\packages\LW.Framework$(FrameworkVersion)" /p:FrameworkReference="package" /p:IsFromMSBuild="true"

但这并不能解决这条路,所以我遇到了如下问题,

Studio\2017\Professional\MSBuild\Microsoft\VisualStudio\v15.0\TextTemplating\Microsoft.TextTemplating.targets(340,5):C:\

文件(x86)\Microsoft Visual 错误: System.IO.FileNotFoundException:未能找到路径'D:\WorkSpace\Projects\Client\Dev\Project\Lw.Domain.Project\$(SolutionDir)\packages\LW.Framework$(FrameworkVersion)Lw.System.Metamodel.dll'.的一部分

代码语言:javascript
复制
 [D:\WorkSpace\Projects\Client\Dev\Project\Lw.Domain.Project\Lw.Domain.Project.csproj]

我的csproj文件遗漏了什么吗?下面是我的csproj文件配置

代码语言:javascript
复制
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  <PropertyGroup>
    <!-- Get the Visual Studio version – defaults to 10: -->
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
    <!-- Keep the next element all on one line: -->
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
    <SolutionDir>$(SolutionDir)</SolutionDir>
    <FrameworkVersion>$(FrameworkVersion)</FrameworkVersion>
    <MetaModelFolder>$(SolutionDir)\packages\LW.Framework$(FrameworkVersion)\</MetaModelFolder>
    <BaseResourceFolder>$(SolutionDir)\packages\LW.Framework$(FrameworkVersion)\</BaseResourceFolder>
    <IsFromMSBuild>$(IsFromMSBuild)</IsFromMSBuild>
    <ComputedSolutionDir>$([System.IO.Path]::GetFullPath($([System.IO.Path]::Combine($(ProjectDir),"..\\"))))</ComputedSolutionDir>
    <DomainResourceFolder>$(SolutionDir)..\Product\Lw.Domain\bin\$(Configuration)\</DomainResourceFolder>
  </PropertyGroup>
  <Import Project="$(VSToolsPath)\TextTemplating\Microsoft.TextTemplating.targets" Condition="'$(VisualStudioVersion)' == '15.0'" />
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-15 08:24:12

我在本地项目上进行了测试,发现不能使用csproj文件中相同的语法"$()"在命令行中传递属性。

您需要将BaseResourceFolder的确切物理路径传递到命令行。从下面的错误。您也忽略了BaseResourceFolder值末尾的"\“。

'D:\WorkSpace\Projects\Client\Dev\Project\Lw.Domain.Project\$(SolutionDir)\packages\LW.Framework$(FrameworkVersion)Lw.System.Metamodel.dll'.

代码语言:javascript
复制
/p:BaseResourceFolder="(phsical path to BaseResourceFolder)\"

希望你能发现上面的帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59332621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档