我想将我的包(应用程序和lib的组合)转换为包。
我的情况
应用X
只是一个script.dart
文件,可在应用X
的根目录中创建文件。
运行良好!
目前正在测试我在APP
文件夹中创建了一个新应用X
并复制了应用APP/packages
。
但是当我通过darteditor运行APP/packages/X/script.dart
时,我得到了
cant open file /package/X/c:/APP/X/script.dart
这是有线的,因为我只是右键单击script.dart
并运行.. 是错误的路径错误?
另外我检查了如果我从script.dart
根文件夹中运行APP
该怎么办,我看到脚本会打开但是一旦我尝试用
file.writeAsStringSync(contentString, encoding: Encoding.ASCII);
我得到了
Breaking on exception: FileException: Cannot open file 'C:\APP' (OS Error: Access is denied.
在开发程序包并将其用作文件系统用户权限意义上的lib程序包时有什么区别?
目前我的结构是
app/bin/script.dart
(用户执行的脚本)
app/tool/helperScript.dart
(bin中脚本调用的函数)
未来的结构也将包括
app/lib/lib.dart
和
app/lib/src/libHelper.dart
更新 当前解决方法 在我的另一个问题how to test dart pub package,有人回答:
如所见here我可以使用pubspec文件中的path选项。
所以不要将我的应用程序放在用户包文件夹中,而是
- 创建一个应用程序包,
- 用户在pubspec中添加我的应用程序的路径(在控制台中提供路径)
-user执行我的脚本
此解决方法修复了我的文件访问问题,但由于用户应用程序现在在pubspec中有path
1.用户无法部署他的包(不编辑他的pubspec)
2.用户必须将我的控制台应用程序复制到他运行其应用程序的服务器上 (嗯,但我现在在想,因为本地机器只是开发,他不得不在他的生产服务器上做同样的事情) 所以我想目前我会坚持这种做法,但
我仍然对
感兴趣如何从lib包中访问绝对app根路径
谢谢
PS。
因为当前的解决方案是create application package and let the user tell you the path
,并且由于问题已经发展,我改变了标题
How to access app root path from inside a combined app/lib package
到
How to create a combined Command-line/Library package