我如何能够将一个大的文本作为参数传递给 Exec Command
.一个包含新行的参数(CRLF)。
目标文件。
<PropertyGroup>
<Notes>$(PackageReleaseNotes)</Notes>
</PropertyGroup>
<Exec Command="$(ExeFile) $(Notes)" />
在我的CsProj文件中。
<PackageReleaseNotes>
This is a test asdhasjdh asdkjadhkjasfh asfasfjkasd
asdaskjhksdf asdjashdka asdkajhasd aaasdas asdkjhjasd asdaf asdasdasd asd,asdad.
asdasda.asd asdad MHM MHM-MHM
</PackageReleaseNotes>
会得到这样的错误。
Error: " exited with code 9009."
猜测一个答案可能是通过一个函数转换格式,然后发送格式化的文本。
也欢迎其他方法,关键部分要保留的是,我想用一个 "main method "来运行一个控制台应用程序,得到这些参数(不在乎它是exe还是DLL),一些猜测可能是Boxunbox,如果可能的话,其他输入的参数,用DLLCompile代替exec这样的参数(不知道是否可能)。
如果我把文字改成单行,可以简单的传递,但我希望它是多行的。
有什么办法可以传递这样的参数吗(如 软件包发布说明)
尝试使用这里描述的解决方案之一来转义它。
https:/docs.microsoft.comen-usvisualstudiomsbuild如何在msbuild中转义?view=vs-2019。
在这种情况下,%3B代表分号,但双引号也应该能用。
<Compile Include="MyFile.cs%3BMyClass.cs"/>
编辑:
此处改为: CRLF 字符,并插入 ^ 符号,在CMD中代表换行。
<PropertyGroup>
<Notes>This is a test asdhasjdh asdkjadhkjasfh asfasfjkasd
asdaskjhksdf asdjashdka asdkajhasd aaasdas asdkjhjasd asdaf asdasdasd asd,asdad.
asdasda.asd asdad MHM MHM-MHM</Notes>
<trimmed>$(Notes.Replace('%0D%0A','^'))</trimmed>
</PropertyGroup>
<Target Name="CustomAfterBuild" AfterTargets="Build">
<Message Text="$(Notes)" Importance="high"/>
<Message Text="$(trimmed)" Importance="high"/>
<Exec Command="cmd.exe $(trimmed)"/>
</Target>
在你的CMD中,你必须恢复这个操作... ...
对我来说,这似乎有点黑。也许你可以传递一个路径,指向一个包含发行说明的文件?