我有一个C#控制台应用程序项目,我试图变成一个Nuget包,以便我的团队中的多个项目可以调用可执行文件此项目位于.csproj文件内的AfterResolveReferences步骤中。无法从MSBuild的Nuget包的“工具”文件夹中引用可执行文件
我创建了NuGet包只是一个.nuspec文件看起来是这样的罚款:
<package ...>
<metadata>
...
<files>
<file src="bin\Release\*.*" target="tools" />
</files>
</metadata>
</package>
这工作,并创建一个NuGet包包含在“工具”目录下的可执行我。问题是包含的文件夹包含Nuget软件包的版本号,这些版本号将会频繁更改。我试图像这样引用它在.csproj的文件:
<Target Name="AfterResolveReferences">
<Exec Command="$(SolutionDir)packages\PackageName.1.2.3\tools\AssemblyName.exe" />
</Target>
当我包括PackageName.1.2.3的路径,它按预期工作,但是这显然是一个非常脆弱的解决方案。当我只使用“AssemblyName.exe”时,我得到“命令AssemblyName.exe用代码9009退出”。
做这种我不熟悉的东西显然是一个简单的标准 - MSBuild和Nuget不是我最强的西装,所以我会非常感谢任何建议。
我实际试图在这里实现的是创建一个TypeScript文件,其中包含从使用TypeLite.Lib包在我的模型项目中定义的C#类派生的接口。必须在构建Web项目之前创建TypeScript文件,因为Web项目中的TypeScript代码取决于此输出中包含的接口。我愿意提供更优雅的方法来解决这个问题,但我仍然想知道如何解决参考问题。
感谢Martin,这真的很有帮助。我会尽力这样做,但我忽略了一些现在很重要的东西。 MyTool.exe的参数需要由消费项目来定义(我在.csproj文件中这样做,但如果它在消费项目的web.config中会更好)。是否有一种逻辑机制可以通过MyTool.exe读取消费项目的配置文件? – wwarby
您可以随时定义/使用项目可以设置的自定义属性 –
使用这种方法得到它的工作 - 非常感谢您的帮助! – wwarby